(function(root, factory){ 'use strict'; if(typeof define==='function'&&define.amd){ define([], factory); } else if(typeof exports==='object'){ module.exports=factory(); }else{ root.Headroom=factory(); }}(this, function(){ 'use strict'; var features={ bind:!!(function(){}.bind), classList:'classList' in document.documentElement, rAF:!!(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame) }; window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame; function Debouncer (callback){ this.callback=callback; this.ticking=false; } Debouncer.prototype={ constructor:Debouncer, update:function(){ this.callback&&this.callback(); this.ticking=false; }, requestTick:function(){ if(!this.ticking){ requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))); this.ticking=true; }}, handleEvent:function(){ this.requestTick(); }}; function isDOMElement(obj){ return obj&&typeof window!=='undefined'&&(obj===window||obj.nodeType); } function extend (object ){ if(arguments.length <=0){ throw new Error('Missing arguments in extend function'); } var result=object||{}, key, i; for (i=1; i < arguments.length; i++){ var replacement=arguments[i]||{}; for (key in replacement){ if(typeof result[key]==='object'&&! isDOMElement(result[key])){ result[key]=extend(result[key], replacement[key]); }else{ result[key]=result[key]||replacement[key]; }} } return result; } function normalizeTolerance (t){ return t===Object(t) ? t:{ down:t, up:t };} function Headroom (elem, options){ options=extend(options, Headroom.options); this.lastKnownScrollY=0; this.elem=elem; this.tolerance=normalizeTolerance(options.tolerance); this.classes=options.classes; this.offset=options.offset; this.scroller=options.scroller; this.initialised=false; this.onPin=options.onPin; this.onUnpin=options.onUnpin; this.onTop=options.onTop; this.onNotTop=options.onNotTop; this.onBottom=options.onBottom; this.onNotBottom=options.onNotBottom; } Headroom.prototype={ constructor:Headroom, init:function(){ if(!Headroom.cutsTheMustard){ return; } this.debouncer=new Debouncer(this.update.bind(this)); this.elem.classList.add(this.classes.initial); setTimeout(this.attachEvent.bind(this), 100); return this; }, destroy:function(){ var classes=this.classes; this.initialised=false; this.elem.classList.remove(classes.unpinned, classes.pinned, classes.top, classes.notTop, classes.initial); this.scroller.removeEventListener('scroll', this.debouncer, false); }, attachEvent:function(){ if(!this.initialised){ this.lastKnownScrollY=this.getScrollY(); this.initialised=true; this.scroller.addEventListener('scroll', this.debouncer, false); this.debouncer.handleEvent(); }}, unpin:function(){ var classList=this.elem.classList, classes=this.classes; if(classList.contains(classes.pinned)||!classList.contains(classes.unpinned)){ classList.add(classes.unpinned); classList.remove(classes.pinned); this.onUnpin&&this.onUnpin.call(this); }}, pin:function(){ var classList=this.elem.classList, classes=this.classes; if(classList.contains(classes.unpinned)){ classList.remove(classes.unpinned); classList.add(classes.pinned); this.onPin&&this.onPin.call(this); }}, top:function(){ var classList=this.elem.classList, classes=this.classes; if(!classList.contains(classes.top)){ classList.add(classes.top); classList.remove(classes.notTop); this.onTop&&this.onTop.call(this); }}, notTop:function(){ var classList=this.elem.classList, classes=this.classes; if(!classList.contains(classes.notTop)){ classList.add(classes.notTop); classList.remove(classes.top); this.onNotTop&&this.onNotTop.call(this); }}, bottom:function(){ var classList=this.elem.classList, classes=this.classes; if(!classList.contains(classes.bottom)){ classList.add(classes.bottom); classList.remove(classes.notBottom); this.onBottom&&this.onBottom.call(this); }}, notBottom:function(){ var classList=this.elem.classList, classes=this.classes; if(!classList.contains(classes.notBottom)){ classList.add(classes.notBottom); classList.remove(classes.bottom); this.onNotBottom&&this.onNotBottom.call(this); }}, getScrollY:function(){ return (this.scroller.pageYOffset!==undefined) ? this.scroller.pageYOffset : (this.scroller.scrollTop!==undefined) ? this.scroller.scrollTop : (document.documentElement||document.body.parentNode||document.body).scrollTop; }, getViewportHeight:function (){ return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; }, getElementPhysicalHeight:function (elm){ return Math.max(elm.offsetHeight, elm.clientHeight ); }, getScrollerPhysicalHeight:function (){ return (this.scroller===window||this.scroller===document.body) ? this.getViewportHeight() : this.getElementPhysicalHeight(this.scroller); }, getDocumentHeight:function (){ var body=document.body, documentElement=document.documentElement; return Math.max(body.scrollHeight, documentElement.scrollHeight, body.offsetHeight, documentElement.offsetHeight, body.clientHeight, documentElement.clientHeight ); }, getElementHeight:function (elm){ return Math.max(elm.scrollHeight, elm.offsetHeight, elm.clientHeight ); }, getScrollerHeight:function (){ return (this.scroller===window||this.scroller===document.body) ? this.getDocumentHeight() : this.getElementHeight(this.scroller); }, isOutOfBounds:function (currentScrollY){ var pastTop=currentScrollY < 0, pastBottom=currentScrollY + this.getScrollerPhysicalHeight() > this.getScrollerHeight(); return pastTop||pastBottom; }, toleranceExceeded:function (currentScrollY, direction){ return Math.abs(currentScrollY-this.lastKnownScrollY) >=this.tolerance[direction]; }, shouldUnpin:function (currentScrollY, toleranceExceeded){ var scrollingDown=currentScrollY > this.lastKnownScrollY, pastOffset=currentScrollY >=this.offset; return scrollingDown&&pastOffset&&toleranceExceeded; }, shouldPin:function (currentScrollY, toleranceExceeded){ var scrollingUp=currentScrollY < this.lastKnownScrollY, pastOffset=currentScrollY <=this.offset; return (scrollingUp&&toleranceExceeded)||pastOffset; }, update:function(){ var currentScrollY=this.getScrollY(), scrollDirection=currentScrollY > this.lastKnownScrollY ? 'down':'up', toleranceExceeded=this.toleranceExceeded(currentScrollY, scrollDirection); if(this.isOutOfBounds(currentScrollY)){ return; } if(currentScrollY <=this.offset){ this.top(); }else{ this.notTop(); } if(currentScrollY + this.getViewportHeight() >=this.getScrollerHeight()){ this.bottom(); }else{ this.notBottom(); } if(this.shouldUnpin(currentScrollY, toleranceExceeded)){ this.unpin(); } else if(this.shouldPin(currentScrollY, toleranceExceeded)){ this.pin(); } this.lastKnownScrollY=currentScrollY; }}; Headroom.options={ tolerance:{ up:0, down:0 }, offset:0, scroller: window, classes:{ pinned:'headroom--pinned', unpinned:'headroom--unpinned', top:'headroom--top', notTop:'headroom--not-top', bottom:'headroom--bottom', notBottom:'headroom--not-bottom', initial:'headroom' }}; Headroom.cutsTheMustard=typeof features!=='undefined'&&features.rAF&&features.bind&&features.classList; return Headroom; })); (function($){ if(!$){ return; } $.fn.headroom=function(option){ return this.each(function(){ var $this=$(this), data=$this.data('headroom'), options=typeof option==='object'&&option; options=$.extend(true, {}, Headroom.options, options); if(!data){ data=new Headroom(this, options); data.init(); $this.data('headroom', data); } if(typeof option==='string'){ data[option](); if(option==='destroy'){ $this.removeData('headroom'); }} }); }; $('[data-headroom]').each(function(){ var $this=$(this); $this.headroom($this.data()); }); }(window.Zepto||window.jQuery)); !function(){var s,i,c,a,o={frameRate:150,animationTime:400,stepSize:100,pulseAlgorithm:!0,pulseScale:4,pulseNormalize:1,accelerationDelta:50,accelerationMax:3,keyboardSupport:!0,arrowScroll:50,fixedBackground:!0,excluded:""},p=o,u=!1,d=!1,l={x:0,y:0},f=!1,m=document.documentElement,h=[],w=/^Mac/.test(navigator.platform),v={left:37,up:38,right:39,down:40,spacebar:32,pageup:33,pagedown:34,end:35,home:36},y={37:1,38:1,39:1,40:1};function b(){if(!f&&document.body){f=!0;var e=document.body,t=document.documentElement,o=window.innerHeight,n=e.scrollHeight;if(m=0<=document.compatMode.indexOf("CSS")?t:e,s=e,p.keyboardSupport&&Y("keydown",D),top!=self)d=!0;else if(Q&&o=p.animationTime,c=i?1:l/p.animationTime;p.pulseAlgorithm&&(c=F(c));var s=a.x*c-a.lastX>>0,u=a.y*c-a.lastY>>0;o+=s,n+=u,a.lastX+=s,a.lastY+=u,i&&(g.splice(r,1),r--)}h?window.scrollBy(o,n):(o&&(d.scrollLeft+=o),n&&(d.scrollTop+=n)),f||m||(g=[]),g.length?j(w,d,1e3/p.frameRate+1):(S=!1,null!=d.$scrollBehavior&&(d.style.scrollBehavior=d.$scrollBehavior,d.$scrollBehavior=null))};j(w,d,0),S=!0}}function e(e){f||b();var t=e.target;if(e.defaultPrevented||e.ctrlKey)return!0;if(N(s,"embed")||N(t,"embed")&&/\.pdf/i.test(t.src)||N(s,"object")||t.shadowRoot)return!0;var o=-e.wheelDeltaX||e.deltaX||0,n=-e.wheelDeltaY||e.deltaY||0;w&&(e.wheelDeltaX&&K(e.wheelDeltaX,120)&&(o=e.wheelDeltaX/Math.abs(e.wheelDeltaX)*-120),e.wheelDeltaY&&K(e.wheelDeltaY,120)&&(n=e.wheelDeltaY/Math.abs(e.wheelDeltaY)*-120)),o||n||(n=-e.wheelDelta||0),1===e.deltaMode&&(o*=40,n*=40);var r=z(t);return r?!!function(e){if(!e)return;h.length||(h=[e,e,e]);e=Math.abs(e),h.push(e),h.shift(),clearTimeout(a),a=setTimeout(function(){try{localStorage.SS_deltaBuffer=h.join(",")}catch(e){}},1e3);var t=120j;j++)if(c=b[j],d=c.parentNode,e=void 0,f=void 0,"IMG"===c.nodeName.toUpperCase()&&(c[g.ns]||(c[g.ns]={}),i.reevaluate||!c[g.ns].evaluated)){if(d&&"PICTURE"===d.nodeName.toUpperCase()){if(g.removeVideoShim(d),e=g.getMatch(c,d),e===!1)continue}else e=void 0;(d&&"PICTURE"===d.nodeName.toUpperCase()||!g.sizesSupported&&c.srcset&&h.test(c.srcset))&&g.dodgeSrcset(c),e?(f=g.processSourceSet(e),g.applyBestCandidate(f,c)):(f=g.processSourceSet(c),(void 0===c.srcset||c[g.ns].srcset)&&g.applyBestCandidate(f,c)),c[g.ns].evaluated=!0}}function f(){function c(){clearTimeout(d),d=setTimeout(h,60)}g.initTypeDetects(),e();var d,f=setInterval(function(){return e(),/^loaded|^i|^c/.test(b.readyState)?void clearInterval(f):void 0},250),h=function(){e({reevaluate:!0})};a.addEventListener?a.addEventListener("resize",c,!1):a.attachEvent&&a.attachEvent("onresize",c)}if(a.HTMLPictureElement)return void d(function(){});b.createElement("picture");var g=a.picturefill||{},h=/\s+\+?\d+(e\d+)?w/;g.ns="picturefill",function(){g.srcsetSupported="srcset"in c,g.sizesSupported="sizes"in c,g.curSrcSupported="currentSrc"in c}(),g.trim=function(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")},g.makeUrl=function(){var a=b.createElement("a");return function(b){return a.href=b,a.href}}(),g.restrictsMixedContent=function(){return"https:"===a.location.protocol},g.matchesMedia=function(b){return a.matchMedia&&a.matchMedia(b).matches},g.getDpr=function(){return a.devicePixelRatio||1},g.getWidthFromLength=function(a){var c;if(!a||a.indexOf("%")>-1!=!1||!(parseFloat(a)>0||a.indexOf("calc(")>-1))return!1;a=a.replace("vw","%"),g.lengthEl||(g.lengthEl=b.createElement("div"),g.lengthEl.style.cssText="border:0;display:block;font-size:1em;left:0;margin:0;padding:0;position:absolute;visibility:hidden",g.lengthEl.className="helper-from-picturefill-js"),g.lengthEl.style.width="0px";try{g.lengthEl.style.width=a}catch(d){}return b.body.appendChild(g.lengthEl),c=g.lengthEl.offsetWidth,0>=c&&(c=!1),b.body.removeChild(g.lengthEl),c},g.detectTypeSupport=function(b,c){var d=new a.Image;return d.onerror=function(){g.types[b]=!1,e()},d.onload=function(){g.types[b]=1===d.width,e()},d.src=c,"pending"},g.types=g.types||{},g.initTypeDetects=function(){g.types["image/jpeg"]=!0,g.types["image/gif"]=!0,g.types["image/png"]=!0,g.types["image/svg+xml"]=b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"),g.types["image/webp"]=g.detectTypeSupport("image/webp","data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=")},g.verifyTypeSupport=function(a){var b=a.getAttribute("type");if(null===b||""===b)return!0;var c=g.types[b];return"string"==typeof c&&"pending"!==c?(g.types[b]=g.detectTypeSupport(b,c),"pending"):"function"==typeof c?(c(),"pending"):c},g.parseSize=function(a){var b=/(\([^)]+\))?\s*(.+)/g.exec(a);return{media:b&&b[1],length:b&&b[2]}},g.findWidthFromSourceSize=function(c){for(var d,e=g.trim(c).split(/\s*,\s*/),f=0,h=e.length;h>f;f++){var i=e[f],j=g.parseSize(i),k=j.length,l=j.media;if(k&&(!l||g.matchesMedia(l))&&(d=g.getWidthFromLength(k)))break}return d||Math.max(a.innerWidth||0,b.documentElement.clientWidth)},g.parseSrcset=function(a){for(var b=[];""!==a;){a=a.replace(/^\s+/g,"");var c,d=a.search(/\s/g),e=null;if(-1!==d){c=a.slice(0,d);var f=c.slice(-1);if((","===f||""===c)&&(c=c.replace(/,+$/,""),e=""),a=a.slice(d+1),null===e){var g=a.indexOf(",");-1!==g?(e=a.slice(0,g),a=a.slice(g+1)):(e=a,a="")}}else c=a,a="";(c||e)&&b.push({url:c,descriptor:e})}return b},g.parseDescriptor=function(a,b){var c,d=b||"100vw",e=a&&a.replace(/(^\s+|\s+$)/g,""),f=g.findWidthFromSourceSize(d);if(e)for(var h=e.split(" "),i=h.length-1;i>=0;i--){var j=h[i],k=j&&j.slice(j.length-1);if("h"!==k&&"w"!==k||g.sizesSupported){if("x"===k){var l=j&&parseFloat(j,10);c=l&&!isNaN(l)?l:1}}else c=parseFloat(parseInt(j,10)/f)}return c||1},g.getCandidatesFromSourceSet=function(a,b){for(var c=g.parseSrcset(a),d=[],e=0,f=c.length;f>e;e++){var h=c[e];d.push({url:h.url,resolution:g.parseDescriptor(h.descriptor,b)})}return d},g.dodgeSrcset=function(a){a.srcset&&(a[g.ns].srcset=a.srcset,a.srcset="",a.setAttribute("data-pfsrcset",a[g.ns].srcset))},g.processSourceSet=function(a){var b=a.getAttribute("srcset"),c=a.getAttribute("sizes"),d=[];return"IMG"===a.nodeName.toUpperCase()&&a[g.ns]&&a[g.ns].srcset&&(b=a[g.ns].srcset),b&&(d=g.getCandidatesFromSourceSet(b,c)),d},g.backfaceVisibilityFix=function(a){var b=a.style||{},c="webkitBackfaceVisibility"in b,d=b.zoom;c&&(b.zoom=".999",c=a.offsetWidth,b.zoom=d)},g.setIntrinsicSize=function(){var c={},d=function(a,b,c){b&&a.setAttribute("width",parseInt(b/c,10))};return function(e,f){var h;e[g.ns]&&!a.pfStopIntrinsicSize&&(void 0===e[g.ns].dims&&(e[g.ns].dims=e.getAttribute("width")||e.getAttribute("height")),e[g.ns].dims||(f.url in c?d(e,c[f.url],f.resolution):(h=b.createElement("img"),h.onload=function(){if(c[f.url]=h.width,!c[f.url])try{b.body.appendChild(h),c[f.url]=h.width||h.offsetWidth,b.body.removeChild(h)}catch(a){}e.src===f.url&&d(e,c[f.url],f.resolution),e=null,h.onload=null,h=null},h.src=f.url)))}}(),g.applyBestCandidate=function(a,b){var c,d,e;a.sort(g.ascendingSort),d=a.length,e=a[d-1];for(var f=0;d>f;f++)if(c=a[f],c.resolution>=g.getDpr()){e=c;break}e&&(e.url=g.makeUrl(e.url),b.src!==e.url&&(g.restrictsMixedContent()&&"http:"===e.url.substr(0,"http:".length).toLowerCase()?void 0!==window.console&&console.warn("Blocked mixed content image "+e.url):(b.src=e.url,g.curSrcSupported||(b.currentSrc=b.src),g.backfaceVisibilityFix(b))),g.setIntrinsicSize(b,e))},g.ascendingSort=function(a,b){return a.resolution-b.resolution},g.removeVideoShim=function(a){var b=a.getElementsByTagName("video");if(b.length){for(var c=b[0],d=c.getElementsByTagName("source");d.length;)a.insertBefore(d[0],c);c.parentNode.removeChild(c)}},g.getAllElements=function(){for(var a=[],c=b.getElementsByTagName("img"),d=0,e=c.length;e>d;d++){var f=c[d];("PICTURE"===f.parentNode.nodeName.toUpperCase()||null!==f.getAttribute("srcset")||f[g.ns]&&null!==f[g.ns].srcset)&&a.push(f)}return a},g.getMatch=function(a,b){for(var c,d=b.childNodes,e=0,f=d.length;f>e;e++){var h=d[e];if(1===h.nodeType){if(h===a)return c;if("SOURCE"===h.nodeName.toUpperCase()){null!==h.getAttribute("src")&&void 0!==typeof console&&console.warn("The `src` attribute is invalid on `picture` `source` element; instead, use `srcset`.");var i=h.getAttribute("media");if(h.getAttribute("srcset")&&(!i||g.matchesMedia(i))){var j=g.verifyTypeSupport(h);if(j===!0){c=h;break}if("pending"===j)return!1}}}}return c},f(),e._=g,d(e)}(window,window.document,new window.Image); (function (factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], factory); }else if(typeof exports==='object'){ module.exports=factory; }else{ factory(jQuery); }}(function ($){ var toFix=['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], toBind=('onwheel' in document||document.documentMode >=9) ? ['wheel']:['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], slice=Array.prototype.slice, nullLowestDeltaTimeout, lowestDelta; if($.event.fixHooks){ for(var i=toFix.length; i;){ $.event.fixHooks[ toFix[--i] ]=$.event.mouseHooks; }} var special=$.event.special.mousewheel={ version: '3.1.12', setup: function(){ if(this.addEventListener){ for(var i=toBind.length; i;){ this.addEventListener(toBind[--i], handler, false); }}else{ this.onmousewheel=handler; } $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); }, teardown: function(){ if(this.removeEventListener){ for(var i=toBind.length; i;){ this.removeEventListener(toBind[--i], handler, false); }}else{ this.onmousewheel=null; } $.removeData(this, 'mousewheel-line-height'); $.removeData(this, 'mousewheel-page-height'); }, getLineHeight: function(elem){ var $elem=$(elem), $parent=$elem['offsetParent' in $.fn ? 'offsetParent':'parent'](); if(!$parent.length){ $parent=$('body'); } return parseInt($parent.css('fontSize'), 10)||parseInt($elem.css('fontSize'), 10)||16; }, getPageHeight: function(elem){ return $(elem).height(); }, settings: { adjustOldDeltas: true, normalizeOffset: true }}; $.fn.extend({ mousewheel: function(fn){ return fn ? this.bind('mousewheel', fn):this.trigger('mousewheel'); }, unmousewheel: function(fn){ return this.unbind('mousewheel', fn); }}); function handler(event){ var orgEvent=event||window.event, args=slice.call(arguments, 1), delta=0, deltaX=0, deltaY=0, absDelta=0, offsetX=0, offsetY=0; event=$.event.fix(orgEvent); event.type='mousewheel'; if('detail' in orgEvent){ deltaY=orgEvent.detail * -1; } if('wheelDelta' in orgEvent){ deltaY=orgEvent.wheelDelta; } if('wheelDeltaY' in orgEvent){ deltaY=orgEvent.wheelDeltaY; } if('wheelDeltaX' in orgEvent){ deltaX=orgEvent.wheelDeltaX * -1; } if('axis' in orgEvent&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS){ deltaX=deltaY * -1; deltaY=0; } delta=deltaY===0 ? deltaX:deltaY; if('deltaY' in orgEvent){ deltaY=orgEvent.deltaY * -1; delta=deltaY; } if('deltaX' in orgEvent){ deltaX=orgEvent.deltaX; if(deltaY===0){ delta=deltaX * -1; }} if(deltaY===0&&deltaX===0){ return; } if(orgEvent.deltaMode===1){ var lineHeight=$.data(this, 'mousewheel-line-height'); delta *=lineHeight; deltaY *=lineHeight; deltaX *=lineHeight; }else if(orgEvent.deltaMode===2){ var pageHeight=$.data(this, 'mousewheel-page-height'); delta *=pageHeight; deltaY *=pageHeight; deltaX *=pageHeight; } absDelta=Math.max(Math.abs(deltaY), Math.abs(deltaX)); if(!lowestDelta||absDelta < lowestDelta){ lowestDelta=absDelta; if(shouldAdjustOldDeltas(orgEvent, absDelta)){ lowestDelta /=40; }} if(shouldAdjustOldDeltas(orgEvent, absDelta)){ delta /=40; deltaX /=40; deltaY /=40; } delta=Math[ delta >=1 ? 'floor':'ceil' ](delta / lowestDelta); deltaX=Math[ deltaX >=1 ? 'floor':'ceil' ](deltaX / lowestDelta); deltaY=Math[ deltaY >=1 ? 'floor':'ceil' ](deltaY / lowestDelta); if(special.settings.normalizeOffset&&this.getBoundingClientRect){ var boundingRect=this.getBoundingClientRect(); offsetX=event.clientX - boundingRect.left; offsetY=event.clientY - boundingRect.top; } event.deltaX=deltaX; event.deltaY=deltaY; event.deltaFactor=lowestDelta; event.offsetX=offsetX; event.offsetY=offsetY; event.deltaMode=0; args.unshift(event, delta, deltaX, deltaY); if(nullLowestDeltaTimeout){ clearTimeout(nullLowestDeltaTimeout); } nullLowestDeltaTimeout=setTimeout(nullLowestDelta, 200); return ($.event.dispatch||$.event.handle).apply(this, args); } function nullLowestDelta(){ lowestDelta=null; } function shouldAdjustOldDeltas(orgEvent, absDelta){ return special.settings.adjustOldDeltas&&orgEvent.type==='mousewheel'&&absDelta % 120===0; }})); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof module==='object'&&module.exports){ module.exports=factory(require('jquery')); }else{ factory(root["jQuery"]); }}(this, function ($){ (function(){ 'use strict'; var defaults={ mode: 'lg-slide', cssEasing: 'ease', easing: 'linear', speed: 600, height: '100%', width: '100%', addClass: '', startClass: 'lg-start-zoom', backdropDuration: 150, hideBarsDelay: 6000, useLeft: false, closable: true, loop: true, escKey: true, keyPress: true, controls: true, slideEndAnimatoin: true, hideControlOnEnd: false, mousewheel: true, getCaptionFromTitleOrAlt: true, appendSubHtmlTo: '.lg-sub-html', subHtmlSelectorRelative: false, preload: 1, showAfterLoad: true, selector: '', selectWithin: '', nextHtml: '', prevHtml: '', index: false, iframeMaxWidth: '100%', download: true, counter: true, appendCounterTo: '.lg-toolbar', swipeThreshold: 50, enableSwipe: true, enableDrag: true, dynamic: false, dynamicEl: [], galleryId: 1 }; function Plugin(element, options){ this.el=element; this.$el=$(element); this.s=$.extend({}, defaults, options); if(this.s.dynamic&&this.s.dynamicEl!=='undefined'&&this.s.dynamicEl.constructor===Array&&!this.s.dynamicEl.length){ throw ('When using dynamic mode, you must also define dynamicEl as an Array.'); } this.modules={}; this.lGalleryOn=false; this.lgBusy=false; this.hideBartimeout=false; this.isTouch=('ontouchstart' in document.documentElement); if(this.s.slideEndAnimatoin){ this.s.hideControlOnEnd=false; } if(this.s.dynamic){ this.$items=this.s.dynamicEl; }else{ if(this.s.selector==='this'){ this.$items=this.$el; }else if(this.s.selector!==''){ if(this.s.selectWithin){ this.$items=$(this.s.selectWithin).find(this.s.selector); }else{ this.$items=this.$el.find($(this.s.selector)); }}else{ this.$items=this.$el.children(); }} this.$slide=''; this.$outer=''; this.init(); return this; } Plugin.prototype.init=function(){ var _this=this; if(_this.s.preload > _this.$items.length){ _this.s.preload=_this.$items.length; } var _hash=window.location.hash; if(_hash.indexOf('lg=' + this.s.galleryId) > 0){ _this.index=parseInt(_hash.split('&slide=')[1], 10); $('body').addClass('lg-from-hash'); if(!$('body').hasClass('lg-on')){ setTimeout(function(){ _this.build(_this.index); }); $('body').addClass('lg-on'); }} if(_this.s.dynamic){ _this.$el.trigger('onBeforeOpen.lg'); _this.index=_this.s.index||0; if(!$('body').hasClass('lg-on')){ setTimeout(function(){ _this.build(_this.index); $('body').addClass('lg-on'); }); }}else{ _this.$items.on('click.lgcustom', function(event){ try { event.preventDefault(); event.preventDefault(); } catch (er){ event.returnValue=false; } _this.$el.trigger('onBeforeOpen.lg'); _this.index=_this.s.index||_this.$items.index(this); if(!$('body').hasClass('lg-on')){ _this.build(_this.index); $('body').addClass('lg-on'); }}); }}; Plugin.prototype.build=function(index){ var _this=this; _this.structure(); $.each($.fn.lightGallery.modules, function(key){ _this.modules[key]=new $.fn.lightGallery.modules[key](_this.el); }); _this.slide(index, false, false, false); if(_this.s.keyPress){ _this.keyPress(); } if(_this.$items.length > 1){ _this.arrow(); setTimeout(function(){ _this.enableDrag(); _this.enableSwipe(); }, 50); if(_this.s.mousewheel){ _this.mousewheel(); }}else{ _this.$slide.on('click.lg', function(){ _this.$el.trigger('onSlideClick.lg'); }); } _this.counter(); _this.closeGallery(); _this.$el.trigger('onAfterOpen.lg'); _this.$outer.on('mousemove.lg click.lg touchstart.lg', function(){ _this.$outer.removeClass('lg-hide-items'); clearTimeout(_this.hideBartimeout); _this.hideBartimeout=setTimeout(function(){ _this.$outer.addClass('lg-hide-items'); }, _this.s.hideBarsDelay); }); _this.$outer.trigger('mousemove.lg'); }; Plugin.prototype.structure=function(){ var list=''; var controls=''; var i=0; var subHtmlCont=''; var template; var _this=this; $('body').append('
'); $('.lg-backdrop').css('transition-duration', this.s.backdropDuration + 'ms'); for (i=0; i < this.$items.length; i++){ list +='
'; } if(this.s.controls&&this.$items.length > 1){ controls='
' + '' + '' + '
'; } if(this.s.appendSubHtmlTo==='.lg-sub-html'){ subHtmlCont='
'; } template='
' + '
' + '
' + list + '
' + '
' + '' + '
' + controls + subHtmlCont + '
' + '
'; $('body').append(template); this.$outer=$('.lg-outer'); this.$slide=this.$outer.find('.lg-item'); if(this.s.useLeft){ this.$outer.addClass('lg-use-left'); this.s.mode='lg-slide'; }else{ this.$outer.addClass('lg-use-css3'); } _this.setTop(); $(window).on('resize.lg orientationchange.lg', function(){ setTimeout(function(){ _this.setTop(); }, 100); }); this.$slide.eq(this.index).addClass('lg-current'); if(this.doCss()){ this.$outer.addClass('lg-css3'); }else{ this.$outer.addClass('lg-css'); this.s.speed=0; } this.$outer.addClass(this.s.mode); if(this.s.enableDrag&&this.$items.length > 1){ this.$outer.addClass('lg-grab'); } if(this.s.showAfterLoad){ this.$outer.addClass('lg-show-after-load'); } if(this.doCss()){ var $inner=this.$outer.find('.lg-inner'); $inner.css('transition-timing-function', this.s.cssEasing); $inner.css('transition-duration', this.s.speed + 'ms'); } setTimeout(function(){ $('.lg-backdrop').addClass('in'); }); setTimeout(function(){ _this.$outer.addClass('lg-visible'); }, this.s.backdropDuration); if(this.s.download){ this.$outer.find('.lg-toolbar').append(''); } this.prevScrollTop=$(window).scrollTop(); }; Plugin.prototype.setTop=function(){ if(this.s.height!=='100%'){ var wH=$(window).height(); var top=(wH - parseInt(this.s.height, 10)) / 2; var $lGallery=this.$outer.find('.lg'); if(wH >=parseInt(this.s.height, 10)){ $lGallery.css('top', top + 'px'); }else{ $lGallery.css('top', '0px'); }} }; Plugin.prototype.doCss=function(){ var support=function(){ var transition=['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition']; var root=document.documentElement; var i=0; for (i=0; i < transition.length; i++){ if(transition[i] in root.style){ return true; }} }; if(support()){ return true; } return false; }; Plugin.prototype.isVideo=function(src, index){ var html; if(this.s.dynamic){ html=this.s.dynamicEl[index].html; }else{ html=this.$items.eq(index).attr('data-html'); } if(!src){ if(html){ return { html5: true };}else{ console.error('lightGallery :- data-src is not pvovided on slide item ' + (index + 1) + '. Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html'); return false; }} var youtube=src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i); var vimeo=src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i); var dailymotion=src.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i); var vk=src.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i); if(youtube){ return { youtube: youtube };}else if(vimeo){ return { vimeo: vimeo };}else if(dailymotion){ return { dailymotion: dailymotion };}else if(vk){ return { vk: vk };}}; Plugin.prototype.counter=function(){ if(this.s.counter){ $(this.s.appendCounterTo).append('
' + (parseInt(this.index, 10) + 1) + ' / ' + this.$items.length + '
'); }}; Plugin.prototype.addHtml=function(index){ var subHtml=null; var subHtmlUrl; var $currentEle; if(this.s.dynamic){ if(this.s.dynamicEl[index].subHtmlUrl){ subHtmlUrl=this.s.dynamicEl[index].subHtmlUrl; }else{ subHtml=this.s.dynamicEl[index].subHtml; }}else{ $currentEle=this.$items.eq(index); if($currentEle.attr('data-sub-html-url')){ subHtmlUrl=$currentEle.attr('data-sub-html-url'); }else{ subHtml=$currentEle.attr('data-sub-html'); if(this.s.getCaptionFromTitleOrAlt&&!subHtml){ subHtml=$currentEle.attr('title')||$currentEle.find('img').first().attr('alt'); }} } if(!subHtmlUrl){ if(typeof subHtml!=='undefined'&&subHtml!==null){ var fL=subHtml.substring(0, 1); if(fL==='.'||fL==='#'){ if(this.s.subHtmlSelectorRelative&&!this.s.dynamic){ subHtml=$currentEle.find(subHtml).html(); }else{ subHtml=$(subHtml).html(); }} }else{ subHtml=''; }} if(this.s.appendSubHtmlTo==='.lg-sub-html'){ if(subHtmlUrl){ this.$outer.find(this.s.appendSubHtmlTo).load(subHtmlUrl); }else{ this.$outer.find(this.s.appendSubHtmlTo).html(subHtml); }}else{ if(subHtmlUrl){ this.$slide.eq(index).load(subHtmlUrl); }else{ this.$slide.eq(index).append(subHtml); }} if(typeof subHtml!=='undefined'&&subHtml!==null){ if(subHtml===''){ this.$outer.find(this.s.appendSubHtmlTo).addClass('lg-empty-html'); }else{ this.$outer.find(this.s.appendSubHtmlTo).removeClass('lg-empty-html'); }} this.$el.trigger('onAfterAppendSubHtml.lg', [index]); }; Plugin.prototype.preload=function(index){ var i=1; var j=1; for (i=1; i <=this.s.preload; i++){ if(i >=this.$items.length - index){ break; } this.loadContent(index + i, false, 0); } for (j=1; j <=this.s.preload; j++){ if(index - j < 0){ break; } this.loadContent(index - j, false, 0); }}; Plugin.prototype.loadContent=function(index, rec, delay){ var _this=this; var _hasPoster=false; var _$img; var _src; var _poster; var _srcset; var _sizes; var _html; var getResponsiveSrc=function(srcItms){ var rsWidth=[]; var rsSrc=[]; for (var i=0; i < srcItms.length; i++){ var __src=srcItms[i].split(' '); if(__src[0]===''){ __src.splice(0, 1); } rsSrc.push(__src[0]); rsWidth.push(__src[1]); } var wWidth=$(window).width(); for (var j=0; j < rsWidth.length; j++){ if(parseInt(rsWidth[j], 10) > wWidth){ _src=rsSrc[j]; break; }} }; if(_this.s.dynamic){ if(_this.s.dynamicEl[index].poster){ _hasPoster=true; _poster=_this.s.dynamicEl[index].poster; } _html=_this.s.dynamicEl[index].html; _src=_this.s.dynamicEl[index].src; if(_this.s.dynamicEl[index].responsive){ var srcDyItms=_this.s.dynamicEl[index].responsive.split(','); getResponsiveSrc(srcDyItms); } _srcset=_this.s.dynamicEl[index].srcset; _sizes=_this.s.dynamicEl[index].sizes; }else{ if(_this.$items.eq(index).attr('data-poster')){ _hasPoster=true; _poster=_this.$items.eq(index).attr('data-poster'); } _html=_this.$items.eq(index).attr('data-html'); _src=_this.$items.eq(index).attr('href')||_this.$items.eq(index).attr('data-src'); if(_this.$items.eq(index).attr('data-responsive')){ var srcItms=_this.$items.eq(index).attr('data-responsive').split(','); getResponsiveSrc(srcItms); } _srcset=_this.$items.eq(index).attr('data-srcset'); _sizes=_this.$items.eq(index).attr('data-sizes'); } var iframe=false; if(_this.s.dynamic){ if(_this.s.dynamicEl[index].iframe){ iframe=true; }}else{ if(_this.$items.eq(index).attr('data-iframe')==='true'){ iframe=true; }} var _isVideo=_this.isVideo(_src, index); if(!_this.$slide.eq(index).hasClass('lg-loaded')){ if(iframe){ _this.$slide.eq(index).prepend('
'); }else if(_hasPoster){ var videoClass=''; if(_isVideo&&_isVideo.youtube){ videoClass='lg-has-youtube'; }else if(_isVideo&&_isVideo.vimeo){ videoClass='lg-has-vimeo'; }else{ videoClass='lg-has-html5'; } _this.$slide.eq(index).prepend('
'); }else if(_isVideo){ _this.$slide.eq(index).prepend('
'); _this.$el.trigger('hasVideo.lg', [index, _src, _html]); }else{ _this.$slide.eq(index).prepend('
'); } _this.$el.trigger('onAferAppendSlide.lg', [index]); _$img=_this.$slide.eq(index).find('.lg-object'); if(_sizes){ _$img.attr('sizes', _sizes); } if(_srcset){ _$img.attr('srcset', _srcset); try { picturefill({ elements: [_$img[0]] }); } catch (e){ console.warn('lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.'); }} if(this.s.appendSubHtmlTo!=='.lg-sub-html'){ _this.addHtml(index); } _this.$slide.eq(index).addClass('lg-loaded'); } _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function(){ var _speed=0; if(delay&&!$('body').hasClass('lg-from-hash')){ _speed=delay; } setTimeout(function(){ _this.$slide.eq(index).addClass('lg-complete'); _this.$el.trigger('onSlideItemLoad.lg', [index, delay||0]); }, _speed); }); if(_isVideo&&_isVideo.html5&&!_hasPoster){ _this.$slide.eq(index).addClass('lg-complete'); } if(rec===true){ if(!_this.$slide.eq(index).hasClass('lg-complete')){ _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function(){ _this.preload(index); }); }else{ _this.preload(index); }} }; Plugin.prototype.slide=function(index, fromTouch, fromThumb, direction){ var _prevIndex=this.$outer.find('.lg-current').index(); var _this=this; if(_this.lGalleryOn&&(_prevIndex===index)){ return; } var _length=this.$slide.length; var _time=_this.lGalleryOn ? this.s.speed:0; if(!_this.lgBusy){ if(this.s.download){ var _src; if(_this.s.dynamic){ _src=_this.s.dynamicEl[index].downloadUrl!==false&&(_this.s.dynamicEl[index].downloadUrl||_this.s.dynamicEl[index].src); }else{ _src=_this.$items.eq(index).attr('data-download-url')!=='false'&&(_this.$items.eq(index).attr('data-download-url')||_this.$items.eq(index).attr('href')||_this.$items.eq(index).attr('data-src')); } if(_src){ $('#lg-download').attr('href', _src); _this.$outer.removeClass('lg-hide-download'); }else{ _this.$outer.addClass('lg-hide-download'); }} this.$el.trigger('onBeforeSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); _this.lgBusy=true; clearTimeout(_this.hideBartimeout); if(this.s.appendSubHtmlTo==='.lg-sub-html'){ setTimeout(function(){ _this.addHtml(index); }, _time); } this.arrowDisable(index); if(!direction){ if(index < _prevIndex){ direction='prev'; }else if(index > _prevIndex){ direction='next'; }} if(!fromTouch){ _this.$outer.addClass('lg-no-trans'); this.$slide.removeClass('lg-prev-slide lg-next-slide'); if(direction==='prev'){ this.$slide.eq(index).addClass('lg-prev-slide'); this.$slide.eq(_prevIndex).addClass('lg-next-slide'); }else{ this.$slide.eq(index).addClass('lg-next-slide'); this.$slide.eq(_prevIndex).addClass('lg-prev-slide'); } setTimeout(function(){ _this.$slide.removeClass('lg-current'); _this.$slide.eq(index).addClass('lg-current'); _this.$outer.removeClass('lg-no-trans'); }, 50); }else{ this.$slide.removeClass('lg-prev-slide lg-current lg-next-slide'); var touchPrev; var touchNext; if(_length > 2){ touchPrev=index - 1; touchNext=index + 1; if((index===0)&&(_prevIndex===_length - 1)){ touchNext=0; touchPrev=_length - 1; }else if((index===_length - 1)&&(_prevIndex===0)){ touchNext=0; touchPrev=_length - 1; }}else{ touchPrev=0; touchNext=1; } if(direction==='prev'){ _this.$slide.eq(touchNext).addClass('lg-next-slide'); }else{ _this.$slide.eq(touchPrev).addClass('lg-prev-slide'); } _this.$slide.eq(index).addClass('lg-current'); } if(_this.lGalleryOn){ setTimeout(function(){ _this.loadContent(index, true, 0); }, this.s.speed + 50); setTimeout(function(){ _this.lgBusy=false; _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); }, this.s.speed); }else{ _this.loadContent(index, true, _this.s.backdropDuration); _this.lgBusy=false; _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]); } _this.lGalleryOn=true; if(this.s.counter){ $('#lg-counter-current').text(index + 1); }} _this.index=index; }; Plugin.prototype.goToNextSlide=function(fromTouch){ var _this=this; var _loop=_this.s.loop; if(fromTouch&&_this.$slide.length < 3){ _loop=false; } if(!_this.lgBusy){ if((_this.index + 1) < _this.$slide.length){ _this.index++; _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]); _this.slide(_this.index, fromTouch, false, 'next'); }else{ if(_loop){ _this.index=0; _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]); _this.slide(_this.index, fromTouch, false, 'next'); }else if(_this.s.slideEndAnimatoin&&!fromTouch){ _this.$outer.addClass('lg-right-end'); setTimeout(function(){ _this.$outer.removeClass('lg-right-end'); }, 400); }} }}; Plugin.prototype.goToPrevSlide=function(fromTouch){ var _this=this; var _loop=_this.s.loop; if(fromTouch&&_this.$slide.length < 3){ _loop=false; } if(!_this.lgBusy){ if(_this.index > 0){ _this.index--; _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]); _this.slide(_this.index, fromTouch, false, 'prev'); }else{ if(_loop){ _this.index=_this.$items.length - 1; _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]); _this.slide(_this.index, fromTouch, false, 'prev'); }else if(_this.s.slideEndAnimatoin&&!fromTouch){ _this.$outer.addClass('lg-left-end'); setTimeout(function(){ _this.$outer.removeClass('lg-left-end'); }, 400); }} }}; Plugin.prototype.keyPress=function(){ var _this=this; if(this.$items.length > 1){ $(window).on('keyup.lg', function(e){ if(_this.$items.length > 1){ if(e.keyCode===37){ e.preventDefault(); _this.goToPrevSlide(); } if(e.keyCode===39){ e.preventDefault(); _this.goToNextSlide(); }} }); } $(window).on('keydown.lg', function(e){ if(_this.s.escKey===true&&e.keyCode===27){ e.preventDefault(); if(!_this.$outer.hasClass('lg-thumb-open')){ _this.destroy(); }else{ _this.$outer.removeClass('lg-thumb-open'); }} }); }; Plugin.prototype.arrow=function(){ var _this=this; this.$outer.find('.lg-prev').on('click.lg', function(){ _this.goToPrevSlide(); }); this.$outer.find('.lg-next').on('click.lg', function(){ _this.goToNextSlide(); }); }; Plugin.prototype.arrowDisable=function(index){ if(!this.s.loop&&this.s.hideControlOnEnd){ if((index + 1) < this.$slide.length){ this.$outer.find('.lg-next').removeAttr('disabled').removeClass('disabled'); }else{ this.$outer.find('.lg-next').attr('disabled', 'disabled').addClass('disabled'); } if(index > 0){ this.$outer.find('.lg-prev').removeAttr('disabled').removeClass('disabled'); }else{ this.$outer.find('.lg-prev').attr('disabled', 'disabled').addClass('disabled'); }} }; Plugin.prototype.setTranslate=function($el, xValue, yValue){ if(this.s.useLeft){ $el.css('left', xValue); }else{ $el.css({ transform: 'translate3d(' + (xValue) + 'px, ' + yValue + 'px, 0px)' }); }}; Plugin.prototype.touchMove=function(startCoords, endCoords){ var distance=endCoords - startCoords; if(Math.abs(distance) > 15){ this.$outer.addClass('lg-dragging'); this.setTranslate(this.$slide.eq(this.index), distance, 0); this.setTranslate($('.lg-prev-slide'), -this.$slide.eq(this.index).width() + distance, 0); this.setTranslate($('.lg-next-slide'), this.$slide.eq(this.index).width() + distance, 0); }}; Plugin.prototype.touchEnd=function(distance){ var _this=this; if(_this.s.mode!=='lg-slide'){ _this.$outer.addClass('lg-slide'); } this.$slide.not('.lg-current, .lg-prev-slide, .lg-next-slide').css('opacity', '0'); setTimeout(function(){ _this.$outer.removeClass('lg-dragging'); if((distance < 0)&&(Math.abs(distance) > _this.s.swipeThreshold)){ _this.goToNextSlide(true); }else if((distance > 0)&&(Math.abs(distance) > _this.s.swipeThreshold)){ _this.goToPrevSlide(true); }else if(Math.abs(distance) < 5){ _this.$el.trigger('onSlideClick.lg'); } _this.$slide.removeAttr('style'); }); setTimeout(function(){ if(!_this.$outer.hasClass('lg-dragging')&&_this.s.mode!=='lg-slide'){ _this.$outer.removeClass('lg-slide'); }}, _this.s.speed + 100); }; Plugin.prototype.enableSwipe=function(){ var _this=this; var startCoords=0; var endCoords=0; var isMoved=false; if(_this.s.enableSwipe&&_this.doCss()){ _this.$slide.on('touchstart.lg', function(e){ if(!_this.$outer.hasClass('lg-zoomed')&&!_this.lgBusy){ e.preventDefault(); _this.manageSwipeClass(); startCoords=e.originalEvent.targetTouches[0].pageX; }}); _this.$slide.on('touchmove.lg', function(e){ if(!_this.$outer.hasClass('lg-zoomed')){ e.preventDefault(); endCoords=e.originalEvent.targetTouches[0].pageX; _this.touchMove(startCoords, endCoords); isMoved=true; }}); _this.$slide.on('touchend.lg', function(){ if(!_this.$outer.hasClass('lg-zoomed')){ if(isMoved){ isMoved=false; _this.touchEnd(endCoords - startCoords); }else{ _this.$el.trigger('onSlideClick.lg'); }} }); }}; Plugin.prototype.enableDrag=function(){ var _this=this; var startCoords=0; var endCoords=0; var isDraging=false; var isMoved=false; if(_this.s.enableDrag&&_this.doCss()){ _this.$slide.on('mousedown.lg', function(e){ if(!_this.$outer.hasClass('lg-zoomed')&&!_this.lgBusy&&!$(e.target).text().trim()){ e.preventDefault(); _this.manageSwipeClass(); startCoords=e.pageX; isDraging=true; _this.$outer.scrollLeft +=1; _this.$outer.scrollLeft -=1; _this.$outer.removeClass('lg-grab').addClass('lg-grabbing'); _this.$el.trigger('onDragstart.lg'); }}); $(window).on('mousemove.lg', function(e){ if(isDraging){ isMoved=true; endCoords=e.pageX; _this.touchMove(startCoords, endCoords); _this.$el.trigger('onDragmove.lg'); }}); $(window).on('mouseup.lg', function(e){ if(isMoved){ isMoved=false; _this.touchEnd(endCoords - startCoords); _this.$el.trigger('onDragend.lg'); }else if($(e.target).hasClass('lg-object')||$(e.target).hasClass('lg-video-play')){ _this.$el.trigger('onSlideClick.lg'); } if(isDraging){ isDraging=false; _this.$outer.removeClass('lg-grabbing').addClass('lg-grab'); }}); }}; Plugin.prototype.manageSwipeClass=function(){ var _touchNext=this.index + 1; var _touchPrev=this.index - 1; if(this.s.loop&&this.$slide.length > 2){ if(this.index===0){ _touchPrev=this.$slide.length - 1; }else if(this.index===this.$slide.length - 1){ _touchNext=0; }} this.$slide.removeClass('lg-next-slide lg-prev-slide'); if(_touchPrev > -1){ this.$slide.eq(_touchPrev).addClass('lg-prev-slide'); } this.$slide.eq(_touchNext).addClass('lg-next-slide'); }; Plugin.prototype.mousewheel=function(){ var _this=this; _this.$outer.on('mousewheel.lg', function(e){ if(!e.deltaY){ return; } if(e.deltaY > 0){ _this.goToPrevSlide(); }else{ _this.goToNextSlide(); } e.preventDefault(); }); }; Plugin.prototype.closeGallery=function(){ var _this=this; var mousedown=false; this.$outer.find('.lg-close').on('click.lg', function(){ _this.destroy(); }); if(_this.s.closable){ _this.$outer.on('mousedown.lg', function(e){ if($(e.target).is('.lg-outer')||$(e.target).is('.lg-item ')||$(e.target).is('.lg-img-wrap')){ mousedown=true; }else{ mousedown=false; }}); _this.$outer.on('mousemove.lg', function(){ mousedown=false; }); _this.$outer.on('mouseup.lg', function(e){ if($(e.target).is('.lg-outer')||$(e.target).is('.lg-item ')||$(e.target).is('.lg-img-wrap')&&mousedown){ if(!_this.$outer.hasClass('lg-dragging')){ _this.destroy(); }} }); }}; Plugin.prototype.destroy=function(d){ var _this=this; if(!d){ _this.$el.trigger('onBeforeClose.lg'); $(window).scrollTop(_this.prevScrollTop); } if(d){ if(!_this.s.dynamic){ this.$items.off('click.lg click.lgcustom'); } $.removeData(_this.el, 'lightGallery'); } this.$el.off('.lg.tm'); $.each($.fn.lightGallery.modules, function(key){ if(_this.modules[key]){ _this.modules[key].destroy(); }}); this.lGalleryOn=false; clearTimeout(_this.hideBartimeout); this.hideBartimeout=false; $(window).off('.lg'); $('body').removeClass('lg-on lg-from-hash'); if(_this.$outer){ _this.$outer.removeClass('lg-visible'); } $('.lg-backdrop').removeClass('in'); setTimeout(function(){ if(_this.$outer){ _this.$outer.remove(); } $('.lg-backdrop').remove(); if(!d){ _this.$el.trigger('onCloseAfter.lg'); }}, _this.s.backdropDuration + 50); }; $.fn.lightGallery=function(options){ return this.each(function(){ if(!$.data(this, 'lightGallery')){ $.data(this, 'lightGallery', new Plugin(this, options)); }else{ try { $(this).data('lightGallery').init(); } catch (err){ console.error('lightGallery has not initiated properly'); }} }); }; $.fn.lightGallery.modules={};})(); })); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof exports==='object'){ module.exports=factory(require('jquery')); }else{ factory(jQuery); }}(this, function ($){ (function(){ 'use strict'; var defaults={ autoplay: false, pause: 5000, progressBar: true, fourceAutoplay: false, autoplayControls: true, appendAutoplayControlsTo: '.lg-toolbar' }; var Autoplay=function(element){ this.core=$(element).data('lightGallery'); this.$el=$(element); if(this.core.$items.length < 2){ return false; } this.core.s=$.extend({}, defaults, this.core.s); this.interval=false; this.fromAuto=true; this.canceledOnTouch=false; this.fourceAutoplayTemp=this.core.s.fourceAutoplay; if(!this.core.doCss()){ this.core.s.progressBar=false; } this.init(); return this; }; Autoplay.prototype.init=function(){ var _this=this; if(_this.core.s.autoplayControls){ _this.controls(); } if(_this.core.s.progressBar){ _this.core.$outer.find('.lg').append('
'); } _this.progress(); if(_this.core.s.autoplay){ _this.$el.one('onSlideItemLoad.lg.tm', function(){ _this.startlAuto(); }); } _this.$el.on('onDragstart.lg.tm touchstart.lg.tm', function(){ if(_this.interval){ _this.cancelAuto(); _this.canceledOnTouch=true; }}); _this.$el.on('onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm', function(){ if(!_this.interval&&_this.canceledOnTouch){ _this.startlAuto(); _this.canceledOnTouch=false; }}); }; Autoplay.prototype.progress=function(){ var _this=this; var _$progressBar; var _$progress; _this.$el.on('onBeforeSlide.lg.tm', function(){ if(_this.core.s.progressBar&&_this.fromAuto){ _$progressBar=_this.core.$outer.find('.lg-progress-bar'); _$progress=_this.core.$outer.find('.lg-progress'); if(_this.interval){ _$progress.removeAttr('style'); _$progressBar.removeClass('lg-start'); setTimeout(function(){ _$progress.css('transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s'); _$progressBar.addClass('lg-start'); }, 20); }} if(!_this.fromAuto&&!_this.core.s.fourceAutoplay){ _this.cancelAuto(); } _this.fromAuto=false; }); }; Autoplay.prototype.controls=function(){ var _this=this; var _html=''; $(this.core.s.appendAutoplayControlsTo).append(_html); _this.core.$outer.find('.lg-autoplay-button').on('click.lg', function(){ if($(_this.core.$outer).hasClass('lg-show-autoplay')){ _this.cancelAuto(); _this.core.s.fourceAutoplay=false; }else{ if(!_this.interval){ _this.startlAuto(); _this.core.s.fourceAutoplay=_this.fourceAutoplayTemp; }} }); }; Autoplay.prototype.startlAuto=function(){ var _this=this; _this.core.$outer.find('.lg-progress').css('transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s'); _this.core.$outer.addClass('lg-show-autoplay'); _this.core.$outer.find('.lg-progress-bar').addClass('lg-start'); _this.interval=setInterval(function(){ if(_this.core.index + 1 < _this.core.$items.length){ _this.core.index++; }else{ _this.core.index=0; } _this.fromAuto=true; _this.core.slide(_this.core.index, false, false, 'next'); }, _this.core.s.speed + _this.core.s.pause); }; Autoplay.prototype.cancelAuto=function(){ clearInterval(this.interval); this.interval=false; this.core.$outer.find('.lg-progress').removeAttr('style'); this.core.$outer.removeClass('lg-show-autoplay'); this.core.$outer.find('.lg-progress-bar').removeClass('lg-start'); }; Autoplay.prototype.destroy=function(){ this.cancelAuto(); this.core.$outer.find('.lg-progress-bar').remove(); }; $.fn.lightGallery.modules.autoplay=Autoplay; })(); })); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof module==='object'&&module.exports){ module.exports=factory(require('jquery')); }else{ factory(root["jQuery"]); }}(this, function ($){ (function(){ 'use strict'; var defaults={ fullScreen: true }; function isFullScreen(){ return ( document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement ); } var Fullscreen=function(element){ this.core=$(element).data('lightGallery'); this.$el=$(element); this.core.s=$.extend({}, defaults, this.core.s); this.init(); return this; }; Fullscreen.prototype.init=function(){ var fullScreen=''; if(this.core.s.fullScreen){ if(!document.fullscreenEnabled&&!document.webkitFullscreenEnabled && !document.mozFullScreenEnabled&&!document.msFullscreenEnabled){ return; }else{ fullScreen=''; this.core.$outer.find('.lg-toolbar').append(fullScreen); this.fullScreen(); }} }; Fullscreen.prototype.requestFullscreen=function(){ var el=document.documentElement; if(el.requestFullscreen){ el.requestFullscreen(); }else if(el.msRequestFullscreen){ el.msRequestFullscreen(); }else if(el.mozRequestFullScreen){ el.mozRequestFullScreen(); }else if(el.webkitRequestFullscreen){ el.webkitRequestFullscreen(); }}; Fullscreen.prototype.exitFullscreen=function(){ if(document.exitFullscreen){ document.exitFullscreen(); }else if(document.msExitFullscreen){ document.msExitFullscreen(); }else if(document.mozCancelFullScreen){ document.mozCancelFullScreen(); }else if(document.webkitExitFullscreen){ document.webkitExitFullscreen(); }}; Fullscreen.prototype.fullScreen=function(){ var _this=this; $(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function(){ _this.core.$outer.toggleClass('lg-fullscreen-on'); }); this.core.$outer.find('.lg-fullscreen').on('click.lg', function(){ if(isFullScreen()){ _this.exitFullscreen(); }else{ _this.requestFullscreen(); }}); }; Fullscreen.prototype.destroy=function(){ if(isFullScreen()){ this.exitFullscreen(); } $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg'); }; $.fn.lightGallery.modules.fullscreen=Fullscreen; })(); })); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof exports==='object'){ module.exports=factory(require('jquery')); }else{ factory(jQuery); }}(this, function ($){ (function(){ 'use strict'; var defaults={ pager: false }; var Pager=function(element){ this.core=$(element).data('lightGallery'); this.$el=$(element); this.core.s=$.extend({}, defaults, this.core.s); if(this.core.s.pager&&this.core.$items.length > 1){ this.init(); } return this; }; Pager.prototype.init=function(){ var _this=this; var pagerList=''; var $pagerCont; var $pagerOuter; var timeout; _this.core.$outer.find('.lg').append('
'); if(_this.core.s.dynamic){ for (var i=0; i < _this.core.s.dynamicEl.length; i++){ pagerList +='
'; }}else{ _this.core.$items.each(function(){ if(!_this.core.s.exThumbImage){ pagerList +='
'; }else{ pagerList +='
'; }}); } $pagerOuter=_this.core.$outer.find('.lg-pager-outer'); $pagerOuter.html(pagerList); $pagerCont=_this.core.$outer.find('.lg-pager-cont'); $pagerCont.on('click.lg touchend.lg', function(){ var _$this=$(this); _this.core.index=_$this.index(); _this.core.slide(_this.core.index, false, true, false); }); $pagerOuter.on('mouseover.lg', function(){ clearTimeout(timeout); $pagerOuter.addClass('lg-pager-hover'); }); $pagerOuter.on('mouseout.lg', function(){ timeout=setTimeout(function(){ $pagerOuter.removeClass('lg-pager-hover'); }); }); _this.core.$el.on('onBeforeSlide.lg.tm', function(e, prevIndex, index){ $pagerCont.removeClass('lg-pager-active'); $pagerCont.eq(index).addClass('lg-pager-active'); }); }; Pager.prototype.destroy=function(){ }; $.fn.lightGallery.modules.pager=Pager; })(); })); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof exports==='object'){ module.exports=factory(require('jquery')); }else{ factory(jQuery); }}(this, function ($){ (function(){ 'use strict'; var defaults={ thumbnail: true, animateThumb: true, currentPagerPosition: 'middle', thumbWidth: 100, thumbHeight: '80px', thumbContHeight: 100, thumbMargin: 5, exThumbImage: false, showThumbByDefault: true, toogleThumb: true, pullCaptionUp: true, enableThumbDrag: true, enableThumbSwipe: true, swipeThreshold: 50, loadYoutubeThumbnail: true, youtubeThumbSize: 1, loadVimeoThumbnail: true, vimeoThumbSize: 'thumbnail_small', loadDailymotionThumbnail: true }; var Thumbnail=function(element){ this.core=$(element).data('lightGallery'); this.core.s=$.extend({}, defaults, this.core.s); this.$el=$(element); this.$thumbOuter=null; this.thumbOuterWidth=0; this.thumbTotalWidth=(this.core.$items.length * (this.core.s.thumbWidth + this.core.s.thumbMargin)); this.thumbIndex=this.core.index; if(this.core.s.animateThumb){ this.core.s.thumbHeight='100%'; } this.left=0; this.init(); return this; }; Thumbnail.prototype.init=function(){ var _this=this; if(this.core.s.thumbnail&&this.core.$items.length > 1){ if(this.core.s.showThumbByDefault){ setTimeout(function(){ _this.core.$outer.addClass('lg-thumb-open'); }, 700); } if(this.core.s.pullCaptionUp){ this.core.$outer.addClass('lg-pull-caption-up'); } this.build(); if(this.core.s.animateThumb&&this.core.doCss()){ if(this.core.s.enableThumbDrag){ this.enableThumbDrag(); } if(this.core.s.enableThumbSwipe){ this.enableThumbSwipe(); } this.thumbClickable=false; }else{ this.thumbClickable=true; } this.toogle(); this.thumbkeyPress(); }}; Thumbnail.prototype.build=function(){ var _this=this; var thumbList=''; var vimeoErrorThumbSize=''; var $thumb; var html='
' + '
' + '
' + '
'; switch (this.core.s.vimeoThumbSize){ case 'thumbnail_large': vimeoErrorThumbSize='640'; break; case 'thumbnail_medium': vimeoErrorThumbSize='200x150'; break; case 'thumbnail_small': vimeoErrorThumbSize='100x75'; } _this.core.$outer.addClass('lg-has-thumb'); _this.core.$outer.find('.lg').append(html); _this.$thumbOuter=_this.core.$outer.find('.lg-thumb-outer'); _this.thumbOuterWidth=_this.$thumbOuter.width(); if(_this.core.s.animateThumb){ _this.core.$outer.find('.lg-thumb').css({ width: _this.thumbTotalWidth + 'px', position: 'relative' }); } if(this.core.s.animateThumb){ _this.$thumbOuter.css('height', _this.core.s.thumbContHeight + 'px'); } function getThumb(src, thumb, index){ var isVideo=_this.core.isVideo(src, index)||{}; var thumbImg; var vimeoId=''; if(isVideo.youtube||isVideo.vimeo||isVideo.dailymotion){ if(isVideo.youtube){ if(_this.core.s.loadYoutubeThumbnail){ thumbImg='//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg'; }else{ thumbImg=thumb; }}else if(isVideo.vimeo){ if(_this.core.s.loadVimeoThumbnail){ thumbImg='//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg'; vimeoId=isVideo.vimeo[1]; }else{ thumbImg=thumb; }}else if(isVideo.dailymotion){ if(_this.core.s.loadDailymotionThumbnail){ thumbImg='//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1]; }else{ thumbImg=thumb; }} }else{ thumbImg=thumb; } thumbList +='
'; vimeoId=''; } if(_this.core.s.dynamic){ for (var i=0; i < _this.core.s.dynamicEl.length; i++){ getThumb(_this.core.s.dynamicEl[i].src, _this.core.s.dynamicEl[i].thumb, i); }}else{ _this.core.$items.each(function(i){ if(!_this.core.s.exThumbImage){ getThumb($(this).attr('href')||$(this).attr('data-src'), $(this).find('img').attr('src'), i); }else{ getThumb($(this).attr('href')||$(this).attr('data-src'), $(this).attr(_this.core.s.exThumbImage), i); }}); } _this.core.$outer.find('.lg-thumb').html(thumbList); $thumb=_this.core.$outer.find('.lg-thumb-item'); $thumb.each(function(){ var $this=$(this); var vimeoVideoId=$this.attr('data-vimeo-id'); if(vimeoVideoId){ $.getJSON('//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=?', { format: 'json' }, function(data){ $this.find('img').attr('src', data[0][_this.core.s.vimeoThumbSize]); }); }}); $thumb.eq(_this.core.index).addClass('active'); _this.core.$el.on('onBeforeSlide.lg.tm', function(){ $thumb.removeClass('active'); $thumb.eq(_this.core.index).addClass('active'); }); $thumb.on('click.lg touchend.lg', function(){ var _$this=$(this); setTimeout(function(){ if((_this.thumbClickable&&!_this.core.lgBusy)||!_this.core.doCss()){ _this.core.index=_$this.index(); _this.core.slide(_this.core.index, false, true, false); }}, 50); }); _this.core.$el.on('onBeforeSlide.lg.tm', function(){ _this.animateThumb(_this.core.index); }); $(window).on('resize.lg.thumb orientationchange.lg.thumb', function(){ setTimeout(function(){ _this.animateThumb(_this.core.index); _this.thumbOuterWidth=_this.$thumbOuter.width(); }, 200); }); }; Thumbnail.prototype.setTranslate=function(value){ this.core.$outer.find('.lg-thumb').css({ transform: 'translate3d(-' + (value) + 'px, 0px, 0px)' }); }; Thumbnail.prototype.animateThumb=function(index){ var $thumb=this.core.$outer.find('.lg-thumb'); if(this.core.s.animateThumb){ var position; switch (this.core.s.currentPagerPosition){ case 'left': position=0; break; case 'middle': position=(this.thumbOuterWidth / 2) - (this.core.s.thumbWidth / 2); break; case 'right': position=this.thumbOuterWidth - this.core.s.thumbWidth; } this.left=((this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1) - position; if(this.left > (this.thumbTotalWidth - this.thumbOuterWidth)){ this.left=this.thumbTotalWidth - this.thumbOuterWidth; } if(this.left < 0){ this.left=0; } if(this.core.lGalleryOn){ if(!$thumb.hasClass('on')){ this.core.$outer.find('.lg-thumb').css('transition-duration', this.core.s.speed + 'ms'); } if(!this.core.doCss()){ $thumb.animate({ left: -this.left + 'px' }, this.core.s.speed); }}else{ if(!this.core.doCss()){ $thumb.css('left', -this.left + 'px'); }} this.setTranslate(this.left); }}; Thumbnail.prototype.enableThumbDrag=function(){ var _this=this; var startCoords=0; var endCoords=0; var isDraging=false; var isMoved=false; var tempLeft=0; _this.$thumbOuter.addClass('lg-grab'); _this.core.$outer.find('.lg-thumb').on('mousedown.lg.thumb', function(e){ if(_this.thumbTotalWidth > _this.thumbOuterWidth){ e.preventDefault(); startCoords=e.pageX; isDraging=true; _this.core.$outer.scrollLeft +=1; _this.core.$outer.scrollLeft -=1; _this.thumbClickable=false; _this.$thumbOuter.removeClass('lg-grab').addClass('lg-grabbing'); }}); $(window).on('mousemove.lg.thumb', function(e){ if(isDraging){ tempLeft=_this.left; isMoved=true; endCoords=e.pageX; _this.$thumbOuter.addClass('lg-dragging'); tempLeft=tempLeft - (endCoords - startCoords); if(tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)){ tempLeft=_this.thumbTotalWidth - _this.thumbOuterWidth; } if(tempLeft < 0){ tempLeft=0; } _this.setTranslate(tempLeft); }}); $(window).on('mouseup.lg.thumb', function(){ if(isMoved){ isMoved=false; _this.$thumbOuter.removeClass('lg-dragging'); _this.left=tempLeft; if(Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold){ _this.thumbClickable=true; }}else{ _this.thumbClickable=true; } if(isDraging){ isDraging=false; _this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab'); }}); }; Thumbnail.prototype.enableThumbSwipe=function(){ var _this=this; var startCoords=0; var endCoords=0; var isMoved=false; var tempLeft=0; _this.core.$outer.find('.lg-thumb').on('touchstart.lg', function(e){ if(_this.thumbTotalWidth > _this.thumbOuterWidth){ e.preventDefault(); startCoords=e.originalEvent.targetTouches[0].pageX; _this.thumbClickable=false; }}); _this.core.$outer.find('.lg-thumb').on('touchmove.lg', function(e){ if(_this.thumbTotalWidth > _this.thumbOuterWidth){ e.preventDefault(); endCoords=e.originalEvent.targetTouches[0].pageX; isMoved=true; _this.$thumbOuter.addClass('lg-dragging'); tempLeft=_this.left; tempLeft=tempLeft - (endCoords - startCoords); if(tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)){ tempLeft=_this.thumbTotalWidth - _this.thumbOuterWidth; } if(tempLeft < 0){ tempLeft=0; } _this.setTranslate(tempLeft); }}); _this.core.$outer.find('.lg-thumb').on('touchend.lg', function(){ if(_this.thumbTotalWidth > _this.thumbOuterWidth){ if(isMoved){ isMoved=false; _this.$thumbOuter.removeClass('lg-dragging'); if(Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold){ _this.thumbClickable=true; } _this.left=tempLeft; }else{ _this.thumbClickable=true; }}else{ _this.thumbClickable=true; }}); }; Thumbnail.prototype.toogle=function(){ var _this=this; if(_this.core.s.toogleThumb){ _this.core.$outer.addClass('lg-can-toggle'); _this.$thumbOuter.append(''); _this.core.$outer.find('.lg-toogle-thumb').on('click.lg', function(){ _this.core.$outer.toggleClass('lg-thumb-open'); }); }}; Thumbnail.prototype.thumbkeyPress=function(){ var _this=this; $(window).on('keydown.lg.thumb', function(e){ if(e.keyCode===38){ e.preventDefault(); _this.core.$outer.addClass('lg-thumb-open'); }else if(e.keyCode===40){ e.preventDefault(); _this.core.$outer.removeClass('lg-thumb-open'); }}); }; Thumbnail.prototype.destroy=function(){ if(this.core.s.thumbnail&&this.core.$items.length > 1){ $(window).off('resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb'); this.$thumbOuter.remove(); this.core.$outer.removeClass('lg-has-thumb'); }}; $.fn.lightGallery.modules.Thumbnail=Thumbnail; })(); })); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof module==='object'&&module.exports){ module.exports=factory(require('jquery')); }else{ factory(root["jQuery"]); }}(this, function ($){ (function(){ 'use strict'; var defaults={ videoMaxWidth: '855px', autoplayFirstVideo: true, youtubePlayerParams: false, vimeoPlayerParams: false, dailymotionPlayerParams: false, vkPlayerParams: false, videojs: false, videojsOptions: {}}; var Video=function(element){ this.core=$(element).data('lightGallery'); this.$el=$(element); this.core.s=$.extend({}, defaults, this.core.s); this.videoLoaded=false; this.init(); return this; }; Video.prototype.init=function(){ var _this=this; _this.core.$el.on('hasVideo.lg.tm', onHasVideo.bind(this)); _this.core.$el.on('onAferAppendSlide.lg.tm', onAferAppendSlide.bind(this)); if(_this.core.doCss()&&(_this.core.$items.length > 1)&&(_this.core.s.enableSwipe||_this.core.s.enableDrag)){ _this.core.$el.on('onSlideClick.lg.tm', function(){ var $el=_this.core.$slide.eq(_this.core.index); _this.loadVideoOnclick($el); }); }else{ _this.core.$slide.on('click.lg', function(){ _this.loadVideoOnclick($(this)); }); } _this.core.$el.on('onBeforeSlide.lg.tm', onBeforeSlide.bind(this)); _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex){ _this.core.$slide.eq(prevIndex).removeClass('lg-video-playing'); }); if(_this.core.s.autoplayFirstVideo){ _this.core.$el.on('onAferAppendSlide.lg.tm', function (e, index){ if(!_this.core.lGalleryOn){ var $el=_this.core.$slide.eq(index); setTimeout(function (){ _this.loadVideoOnclick($el); }, 100); }}); }}; Video.prototype.loadVideo=function(src, addClass, noPoster, index, html){ var video=''; var autoplay=1; var a=''; var isVideo=this.core.isVideo(src, index)||{}; if(noPoster){ if(this.videoLoaded){ autoplay=0; }else{ autoplay=this.core.s.autoplayFirstVideo ? 1:0; }} if(isVideo.youtube){ a='?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1'; if(this.core.s.youtubePlayerParams){ a=a + '&' + $.param(this.core.s.youtubePlayerParams); } video=''; }else if(isVideo.vimeo){ a='?autoplay=' + autoplay + '&api=1'; if(this.core.s.vimeoPlayerParams){ a=a + '&' + $.param(this.core.s.vimeoPlayerParams); } video=''; }else if(isVideo.dailymotion){ a='?wmode=opaque&autoplay=' + autoplay + '&api=postMessage'; if(this.core.s.dailymotionPlayerParams){ a=a + '&' + $.param(this.core.s.dailymotionPlayerParams); } video=''; }else if(isVideo.html5){ var fL=html.substring(0, 1); if(fL==='.'||fL==='#'){ html=$(html).html(); } video=html; }else if(isVideo.vk){ a='&autoplay=' + autoplay; if(this.core.s.vkPlayerParams){ a=a + '&' + $.param(this.core.s.vkPlayerParams); } video=''; } return video; }; Video.prototype.loadVideoOnclick=function($el){ var _this=this; if($el.find('.lg-object').hasClass('lg-has-poster')&&$el.find('.lg-object').is(':visible')){ if(!$el.hasClass('lg-has-video')){ $el.addClass('lg-video-playing lg-has-video'); var _src; var _html; var _loadVideo=function(_src, _html){ $el.find('.lg-video').append(_this.loadVideo(_src, '', false, _this.core.index, _html)); if(_html){ if(_this.core.s.videojs){ try { videojs(_this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function(){ this.play(); }); } catch (e){ console.error('Make sure you have included videojs'); }}else{ _this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0).play(); }} }; if(_this.core.s.dynamic){ _src=_this.core.s.dynamicEl[_this.core.index].src; _html=_this.core.s.dynamicEl[_this.core.index].html; _loadVideo(_src, _html); }else{ _src=_this.core.$items.eq(_this.core.index).attr('href')||_this.core.$items.eq(_this.core.index).attr('data-src'); _html=_this.core.$items.eq(_this.core.index).attr('data-html'); _loadVideo(_src, _html); } var $tempImg=$el.find('.lg-object'); $el.find('.lg-video').append($tempImg); if(!$el.find('.lg-video-object').hasClass('lg-html5')){ $el.removeClass('lg-complete'); $el.find('.lg-video-object').on('load.lg error.lg', function(){ $el.addClass('lg-complete'); }); }}else{ var youtubePlayer=$el.find('.lg-youtube').get(0); var vimeoPlayer=$el.find('.lg-vimeo').get(0); var dailymotionPlayer=$el.find('.lg-dailymotion').get(0); var html5Player=$el.find('.lg-html5').get(0); if(youtubePlayer){ youtubePlayer.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*'); }else if(vimeoPlayer){ try { $f(vimeoPlayer).api('play'); } catch (e){ console.error('Make sure you have included froogaloop2 js'); }}else if(dailymotionPlayer){ dailymotionPlayer.contentWindow.postMessage('play', '*'); }else if(html5Player){ if(_this.core.s.videojs){ try { videojs(html5Player).play(); } catch (e){ console.error('Make sure you have included videojs'); }}else{ html5Player.play(); }} $el.addClass('lg-video-playing'); }} }; Video.prototype.destroy=function(){ this.videoLoaded=false; }; function onHasVideo(event, index, src, html){ var _this=this; _this.core.$slide.eq(index).find('.lg-video').append(_this.loadVideo(src, 'lg-object', true, index, html)); if(html){ if(_this.core.s.videojs){ try { videojs(_this.core.$slide.eq(index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function(){ if(!_this.videoLoaded&&_this.core.s.autoplayFirstVideo){ this.play(); }}); } catch (e){ console.error('Make sure you have included videojs'); }}else{ if(!_this.videoLoaded&&_this.core.s.autoplayFirstVideo){ _this.core.$slide.eq(index).find('.lg-html5').get(0).play(); }} }} function onAferAppendSlide(event, index){ var $videoCont=this.core.$slide.eq(index).find('.lg-video-cont'); if(!$videoCont.hasClass('lg-has-iframe')){ $videoCont.css('max-width', this.core.s.videoMaxWidth); this.videoLoaded=true; }} function onBeforeSlide(event, prevIndex, index){ var _this=this; var $videoSlide=_this.core.$slide.eq(prevIndex); var youtubePlayer=$videoSlide.find('.lg-youtube').get(0); var vimeoPlayer=$videoSlide.find('.lg-vimeo').get(0); var dailymotionPlayer=$videoSlide.find('.lg-dailymotion').get(0); var vkPlayer=$videoSlide.find('.lg-vk').get(0); var html5Player=$videoSlide.find('.lg-html5').get(0); if(youtubePlayer){ youtubePlayer.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*'); }else if(vimeoPlayer){ try { $f(vimeoPlayer).api('pause'); } catch (e){ console.error('Make sure you have included froogaloop2 js'); }}else if(dailymotionPlayer){ dailymotionPlayer.contentWindow.postMessage('pause', '*'); }else if(html5Player){ if(_this.core.s.videojs){ try { videojs(html5Player).pause(); } catch (e){ console.error('Make sure you have included videojs'); }}else{ html5Player.pause(); }} if(vkPlayer){ $(vkPlayer).attr('src', $(vkPlayer).attr('src').replace('&autoplay', '&noplay')); } var _src; if(_this.core.s.dynamic){ _src=_this.core.s.dynamicEl[index].src; }else{ _src=_this.core.$items.eq(index).attr('href')||_this.core.$items.eq(index).attr('data-src'); } var _isVideo=_this.core.isVideo(_src, index)||{}; if(_isVideo.youtube||_isVideo.vimeo||_isVideo.dailymotion||_isVideo.vk){ _this.core.$outer.addClass('lg-hide-download'); }} $.fn.lightGallery.modules.video=Video; })(); })); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof exports==='object'){ module.exports=factory(require('jquery')); }else{ factory(jQuery); }}(this, function ($){ (function(){ 'use strict'; var getUseLeft=function(){ var useLeft=false; var isChrome=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); if(isChrome&&parseInt(isChrome[2], 10) < 54){ useLeft=true; } return useLeft; }; var defaults={ scale: 1, zoom: true, actualSize: true, enableZoomAfter: 300, useLeftForZoom: getUseLeft() }; var Zoom=function(element){ this.core=$(element).data('lightGallery'); this.core.s=$.extend({}, defaults, this.core.s); if(this.core.s.zoom&&this.core.doCss()){ this.init(); this.zoomabletimeout=false; this.pageX=$(window).width() / 2; this.pageY=($(window).height() / 2) + $(window).scrollTop(); } return this; }; Zoom.prototype.init=function(){ var _this=this; var zoomIcons=''; if(_this.core.s.actualSize){ zoomIcons +=''; } if(_this.core.s.useLeftForZoom){ _this.core.$outer.addClass('lg-use-left-for-zoom'); }else{ _this.core.$outer.addClass('lg-use-transition-for-zoom'); } this.core.$outer.find('.lg-toolbar').append(zoomIcons); _this.core.$el.on('onSlideItemLoad.lg.tm.zoom', function(event, index, delay){ var _speed=_this.core.s.enableZoomAfter + delay; if($('body').hasClass('lg-from-hash')&&delay){ _speed=0; }else{ $('body').removeClass('lg-from-hash'); } _this.zoomabletimeout=setTimeout(function(){ _this.core.$slide.eq(index).addClass('lg-zoomable'); }, _speed + 30); }); var scale=1; var zoom=function(scaleVal){ var $image=_this.core.$outer.find('.lg-current .lg-image'); var _x; var _y; var offsetX=($(window).width() - $image.prop('offsetWidth')) / 2; var offsetY=(($(window).height() - $image.prop('offsetHeight')) / 2) + $(window).scrollTop(); _x=_this.pageX - offsetX; _y=_this.pageY - offsetY; var x=(scaleVal - 1) * (_x); var y=(scaleVal - 1) * (_y); $image.css('transform', 'scale3d(' + scaleVal + ', ' + scaleVal + ', 1)').attr('data-scale', scaleVal); if(_this.core.s.useLeftForZoom){ $image.parent().css({ left: -x + 'px', top: -y + 'px' }).attr('data-x', x).attr('data-y', y); }else{ $image.parent().css('transform', 'translate3d(-' + x + 'px, -' + y + 'px, 0)').attr('data-x', x).attr('data-y', y); }}; var callScale=function(){ if(scale > 1){ _this.core.$outer.addClass('lg-zoomed'); }else{ _this.resetZoom(); } if(scale < 1){ scale=1; } zoom(scale); }; var actualSize=function(event, $image, index, fromIcon){ var w=$image.prop('offsetWidth'); var nw; if(_this.core.s.dynamic){ nw=_this.core.s.dynamicEl[index].width||$image[0].naturalWidth||w; }else{ nw=_this.core.$items.eq(index).attr('data-width')||$image[0].naturalWidth||w; } var _scale; if(_this.core.$outer.hasClass('lg-zoomed')){ scale=1; }else{ if(nw > w){ _scale=nw / w; scale=_scale||2; }} if(fromIcon){ _this.pageX=$(window).width() / 2; _this.pageY=($(window).height() / 2) + $(window).scrollTop(); }else{ _this.pageX=event.pageX||event.originalEvent.targetTouches[0].pageX; _this.pageY=event.pageY||event.originalEvent.targetTouches[0].pageY; } callScale(); setTimeout(function(){ _this.core.$outer.removeClass('lg-grabbing').addClass('lg-grab'); }, 10); }; var tapped=false; _this.core.$el.on('onAferAppendSlide.lg.tm.zoom', function(event, index){ var $image=_this.core.$slide.eq(index).find('.lg-image'); $image.on('dblclick', function(event){ actualSize(event, $image, index); }); $image.on('touchstart', function(event){ if(!tapped){ tapped=setTimeout(function(){ tapped=null; }, 300); }else{ clearTimeout(tapped); tapped=null; actualSize(event, $image, index); } event.preventDefault(); }); }); $(window).on('resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom', function(){ _this.pageX=$(window).width() / 2; _this.pageY=($(window).height() / 2) + $(window).scrollTop(); zoom(scale); }); $('#lg-zoom-out').on('click.lg', function(){ if(_this.core.$outer.find('.lg-current .lg-image').length){ scale -=_this.core.s.scale; callScale(); }}); $('#lg-zoom-in').on('click.lg', function(){ if(_this.core.$outer.find('.lg-current .lg-image').length){ scale +=_this.core.s.scale; callScale(); }}); $('#lg-actual-size').on('click.lg', function(event){ actualSize(event, _this.core.$slide.eq(_this.core.index).find('.lg-image'), _this.core.index, true); }); _this.core.$el.on('onBeforeSlide.lg.tm', function(){ scale=1; _this.resetZoom(); }); _this.zoomDrag(); _this.zoomSwipe(); }; Zoom.prototype.resetZoom=function(){ this.core.$outer.removeClass('lg-zoomed'); this.core.$slide.find('.lg-img-wrap').removeAttr('style data-x data-y'); this.core.$slide.find('.lg-image').removeAttr('style data-scale'); this.pageX=$(window).width() / 2; this.pageY=($(window).height() / 2) + $(window).scrollTop(); }; Zoom.prototype.zoomSwipe=function(){ var _this=this; var startCoords={}; var endCoords={}; var isMoved=false; var allowX=false; var allowY=false; _this.core.$slide.on('touchstart.lg', function(e){ if(_this.core.$outer.hasClass('lg-zoomed')){ var $image=_this.core.$slide.eq(_this.core.index).find('.lg-object'); allowY=$image.prop('offsetHeight') * $image.attr('data-scale') > _this.core.$outer.find('.lg').height(); allowX=$image.prop('offsetWidth') * $image.attr('data-scale') > _this.core.$outer.find('.lg').width(); if((allowX||allowY)){ e.preventDefault(); startCoords={ x: e.originalEvent.targetTouches[0].pageX, y: e.originalEvent.targetTouches[0].pageY };}} }); _this.core.$slide.on('touchmove.lg', function(e){ if(_this.core.$outer.hasClass('lg-zoomed')){ var _$el=_this.core.$slide.eq(_this.core.index).find('.lg-img-wrap'); var distanceX; var distanceY; e.preventDefault(); isMoved=true; endCoords={ x: e.originalEvent.targetTouches[0].pageX, y: e.originalEvent.targetTouches[0].pageY }; _this.core.$outer.addClass('lg-zoom-dragging'); if(allowY){ distanceY=(-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y); }else{ distanceY=-Math.abs(_$el.attr('data-y')); } if(allowX){ distanceX=(-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x); }else{ distanceX=-Math.abs(_$el.attr('data-x')); } if((Math.abs(endCoords.x - startCoords.x) > 15)||(Math.abs(endCoords.y - startCoords.y) > 15)){ if(_this.core.s.useLeftForZoom){ _$el.css({ left: distanceX + 'px', top: distanceY + 'px' }); }else{ _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)'); }} }}); _this.core.$slide.on('touchend.lg', function(){ if(_this.core.$outer.hasClass('lg-zoomed')){ if(isMoved){ isMoved=false; _this.core.$outer.removeClass('lg-zoom-dragging'); _this.touchendZoom(startCoords, endCoords, allowX, allowY); }} }); }; Zoom.prototype.zoomDrag=function(){ var _this=this; var startCoords={}; var endCoords={}; var isDraging=false; var isMoved=false; var allowX=false; var allowY=false; _this.core.$slide.on('mousedown.lg.zoom', function(e){ var $image=_this.core.$slide.eq(_this.core.index).find('.lg-object'); allowY=$image.prop('offsetHeight') * $image.attr('data-scale') > _this.core.$outer.find('.lg').height(); allowX=$image.prop('offsetWidth') * $image.attr('data-scale') > _this.core.$outer.find('.lg').width(); if(_this.core.$outer.hasClass('lg-zoomed')){ if($(e.target).hasClass('lg-object')&&(allowX||allowY)){ e.preventDefault(); startCoords={ x: e.pageX, y: e.pageY }; isDraging=true; _this.core.$outer.scrollLeft +=1; _this.core.$outer.scrollLeft -=1; _this.core.$outer.removeClass('lg-grab').addClass('lg-grabbing'); }} }); $(window).on('mousemove.lg.zoom', function(e){ if(isDraging){ var _$el=_this.core.$slide.eq(_this.core.index).find('.lg-img-wrap'); var distanceX; var distanceY; isMoved=true; endCoords={ x: e.pageX, y: e.pageY }; _this.core.$outer.addClass('lg-zoom-dragging'); if(allowY){ distanceY=(-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y); }else{ distanceY=-Math.abs(_$el.attr('data-y')); } if(allowX){ distanceX=(-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x); }else{ distanceX=-Math.abs(_$el.attr('data-x')); } if(_this.core.s.useLeftForZoom){ _$el.css({ left: distanceX + 'px', top: distanceY + 'px' }); }else{ _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)'); }} }); $(window).on('mouseup.lg.zoom', function(e){ if(isDraging){ isDraging=false; _this.core.$outer.removeClass('lg-zoom-dragging'); if(isMoved&&((startCoords.x!==endCoords.x)||(startCoords.y!==endCoords.y))){ endCoords={ x: e.pageX, y: e.pageY }; _this.touchendZoom(startCoords, endCoords, allowX, allowY); } isMoved=false; } _this.core.$outer.removeClass('lg-grabbing').addClass('lg-grab'); }); }; Zoom.prototype.touchendZoom=function(startCoords, endCoords, allowX, allowY){ var _this=this; var _$el=_this.core.$slide.eq(_this.core.index).find('.lg-img-wrap'); var $image=_this.core.$slide.eq(_this.core.index).find('.lg-object'); var distanceX=(-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x); var distanceY=(-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y); var minY=(_this.core.$outer.find('.lg').height() - $image.prop('offsetHeight')) / 2; var maxY=Math.abs(($image.prop('offsetHeight') * Math.abs($image.attr('data-scale'))) - _this.core.$outer.find('.lg').height() + minY); var minX=(_this.core.$outer.find('.lg').width() - $image.prop('offsetWidth')) / 2; var maxX=Math.abs(($image.prop('offsetWidth') * Math.abs($image.attr('data-scale'))) - _this.core.$outer.find('.lg').width() + minX); if((Math.abs(endCoords.x - startCoords.x) > 15)||(Math.abs(endCoords.y - startCoords.y) > 15)){ if(allowY){ if(distanceY <=-maxY){ distanceY=-maxY; }else if(distanceY >=-minY){ distanceY=-minY; }} if(allowX){ if(distanceX <=-maxX){ distanceX=-maxX; }else if(distanceX >=-minX){ distanceX=-minX; }} if(allowY){ _$el.attr('data-y', Math.abs(distanceY)); }else{ distanceY=-Math.abs(_$el.attr('data-y')); } if(allowX){ _$el.attr('data-x', Math.abs(distanceX)); }else{ distanceX=-Math.abs(_$el.attr('data-x')); } if(_this.core.s.useLeftForZoom){ _$el.css({ left: distanceX + 'px', top: distanceY + 'px' }); }else{ _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)'); }} }; Zoom.prototype.destroy=function(){ var _this=this; _this.core.$el.off('.lg.zoom'); $(window).off('.lg.zoom'); _this.core.$slide.off('.lg.zoom'); _this.core.$el.off('.lg.tm.zoom'); _this.resetZoom(); clearTimeout(_this.zoomabletimeout); _this.zoomabletimeout=false; }; $.fn.lightGallery.modules.zoom=Zoom; })(); })); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof exports==='object'){ module.exports=factory(require('jquery')); }else{ factory(jQuery); }}(this, function ($){ (function(){ 'use strict'; var defaults={ hash: true }; var Hash=function(element){ this.core=$(element).data('lightGallery'); this.core.s=$.extend({}, defaults, this.core.s); if(this.core.s.hash){ this.oldHash=window.location.hash; this.init(); } return this; }; Hash.prototype.init=function(){ var _this=this; var _hash; _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex, index){ if(history.replaceState){ history.replaceState(null, null, window.location.pathname + window.location.search + '#lg=' + _this.core.s.galleryId + '&slide=' + index); }else{ window.location.hash='lg=' + _this.core.s.galleryId + '&slide=' + index; }}); $(window).on('hashchange.lg.hash', function(){ _hash=window.location.hash; var _idx=parseInt(_hash.split('&slide=')[1], 10); if((_hash.indexOf('lg=' + _this.core.s.galleryId) > -1)){ _this.core.slide(_idx, false, false); }else if(_this.core.lGalleryOn){ _this.core.destroy(); }}); }; Hash.prototype.destroy=function(){ if(!this.core.s.hash){ return; } if(this.oldHash&&this.oldHash.indexOf('lg=' + this.core.s.galleryId) < 0){ if(history.replaceState){ history.replaceState(null, null, this.oldHash); }else{ window.location.hash=this.oldHash; }}else{ if(history.replaceState){ history.replaceState(null, document.title, window.location.pathname + window.location.search); }else{ window.location.hash=''; }} this.core.$el.off('.lg.hash'); }; $.fn.lightGallery.modules.hash=Hash; })(); })); (function (root, factory){ if(typeof define==='function'&&define.amd){ define(['jquery'], function (a0){ return (factory(a0)); }); }else if(typeof exports==='object'){ module.exports=factory(require('jquery')); }else{ factory(jQuery); }}(this, function ($){ (function(){ 'use strict'; var defaults={ share: true, facebook: true, facebookDropdownText: 'Facebook', twitter: true, twitterDropdownText: 'Twitter', googlePlus: true, googlePlusDropdownText: 'GooglePlus', pinterest: true, pinterestDropdownText: 'Pinterest' }; var Share=function(element){ this.core=$(element).data('lightGallery'); this.core.s=$.extend({}, defaults, this.core.s); if(this.core.s.share){ this.init(); } return this; }; Share.prototype.init=function(){ var _this=this; var shareHtml='' + ''; this.core.$outer.find('.lg-toolbar').append(shareHtml); this.core.$outer.find('.lg').append('
'); $('#lg-share').on('click.lg', function(){ _this.core.$outer.toggleClass('lg-dropdown-active'); }); $('#lg-dropdown-overlay').on('click.lg', function(){ _this.core.$outer.removeClass('lg-dropdown-active'); }); _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex, index){ setTimeout(function(){ $('#lg-share-facebook').attr('href', 'https://www.facebook.com/sharer/sharer.php?u=' + (encodeURIComponent(_this.getSahreProps(index, 'facebookShareUrl')||window.location.href))); $('#lg-share-twitter').attr('href', 'https://twitter.com/intent/tweet?text=' + _this.getSahreProps(index, 'tweetText') + '&url=' + (encodeURIComponent(_this.getSahreProps(index, 'twitterShareUrl')||window.location.href))); $('#lg-share-googleplus').attr('href', 'https://plus.google.com/share?url=' + (encodeURIComponent(_this.getSahreProps(index, 'googleplusShareUrl')||window.location.href))); $('#lg-share-pinterest').attr('href', 'http://www.pinterest.com/pin/create/button/?url=' + (encodeURIComponent(_this.getSahreProps(index, 'pinterestShareUrl')||window.location.href)) + '&media=' + encodeURIComponent(_this.getSahreProps(index, 'src')) + '&description=' + _this.getSahreProps(index, 'pinterestText')); }, 100); }); }; Share.prototype.getSahreProps=function(index, prop){ var shareProp=''; if(this.core.s.dynamic){ shareProp=this.core.s.dynamicEl[index][prop]; }else{ var _href=this.core.$items.eq(index).attr('href'); var _prop=this.core.$items.eq(index).data(prop); shareProp=prop==='src' ? _href||_prop:_prop; } return shareProp; }; Share.prototype.destroy=function(){ }; $.fn.lightGallery.modules.share=Share; })(); })); !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof module&&module.exports?require("jquery"):jQuery)}(function(a){var b="2.0.1",c={},d={exclude:[],excludeWithin:[],offset:0,direction:"top",delegateSelector:null,scrollElement:null,scrollTarget:null,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficient:2,preventDefault:!0},e=function(b){var c=[],d=!1,e=b.dir&&"left"===b.dir?"scrollLeft":"scrollTop";return this.each(function(){var b=a(this);if(this!==document&&this!==window)return!document.scrollingElement||this!==document.documentElement&&this!==document.body?void(b[e]()>0?c.push(this):(b[e](1),d=b[e]()>0,d&&c.push(this),b[e](0))):(c.push(document.scrollingElement),!1)}),c.length||this.each(function(){this===document.documentElement&&"smooth"===a(this).css("scrollBehavior")&&(c=[this]),c.length||"BODY"!==this.nodeName||(c=[this])}),"first"===b.el&&c.length>1&&(c=[c[0]]),c};a.fn.extend({scrollable:function(a){var b=e.call(this,{dir:a});return this.pushStack(b)},firstScrollable:function(a){var b=e.call(this,{el:"first",dir:a});return this.pushStack(b)},smoothScroll:function(b,c){if(b=b||{},"options"===b)return c?this.each(function(){var b=a(this),d=a.extend(b.data("ssOpts")||{},c);a(this).data("ssOpts",d)}):this.first().data("ssOpts");var d=a.extend({},a.fn.smoothScroll.defaults,b),e=function(b){var c=function(a){return a.replace(/(:|\.|\/)/g,"\\$1")},e=this,f=a(this),g=a.extend({},d,f.data("ssOpts")||{}),h=d.exclude,i=g.excludeWithin,j=0,k=0,l=!0,m={},n=a.smoothScroll.filterPath(location.pathname),o=a.smoothScroll.filterPath(e.pathname),p=location.hostname===e.hostname||!e.hostname,q=g.scrollTarget||o===n,r=c(e.hash);if(r&&!a(r).length&&(l=!1),g.scrollTarget||p&&q&&r){for(;l&&j=0&&html.indexOf('>') >=0){ var toCreate='div'; if(html.indexOf(':~]/)){ els=[doc.getElementById(selector.trim().split('#')[1])]; }else{ els=(context||doc).querySelectorAll(selector.trim()); } for (i=0; i < els.length; i +=1){ if(els[i]){ arr.push(els[i]); }} }}else if(selector.nodeType||selector===win||selector===doc){ arr.push(selector); }else if(selector.length > 0&&selector[0].nodeType){ for (i=0; i < selector.length; i +=1){ arr.push(selector[i]); }} } return new Dom7(arr); } $.fn=Dom7.prototype; $.Class=Dom7; $.Dom7=Dom7; function unique(arr){ var uniqueArray=[]; for (var i=0; i < arr.length; i +=1){ if(uniqueArray.indexOf(arr[i])===-1){ uniqueArray.push(arr[i]); }} return uniqueArray; } function addClass(className){ var this$1=this; if(typeof className==='undefined'){ return this; } var classes=className.split(' '); for (var i=0; i < classes.length; i +=1){ for (var j=0; j < this.length; j +=1){ if(typeof this$1[j]!=='undefined'&&typeof this$1[j].classList!=='undefined'){ this$1[j].classList.add(classes[i]); }} } return this; } function removeClass(className){ var this$1=this; var classes=className.split(' '); for (var i=0; i < classes.length; i +=1){ for (var j=0; j < this.length; j +=1){ if(typeof this$1[j]!=='undefined'&&typeof this$1[j].classList!=='undefined'){ this$1[j].classList.remove(classes[i]); }} } return this; } function hasClass(className){ if(!this[0]){ return false; } return this[0].classList.contains(className); } function toggleClass(className){ var this$1=this; var classes=className.split(' '); for (var i=0; i < classes.length; i +=1){ for (var j=0; j < this.length; j +=1){ if(typeof this$1[j]!=='undefined'&&typeof this$1[j].classList!=='undefined'){ this$1[j].classList.toggle(classes[i]); }} } return this; } function attr(attrs, value){ var arguments$1=arguments; var this$1=this; if(arguments.length===1&&typeof attrs==='string'){ if(this[0]){ return this[0].getAttribute(attrs); } return undefined; } for (var i=0; i < this.length; i +=1){ if(arguments$1.length===2){ this$1[i].setAttribute(attrs, value); }else{ for (var attrName in attrs){ this$1[i][attrName]=attrs[attrName]; this$1[i].setAttribute(attrName, attrs[attrName]); }} } return this; } function removeAttr(attr){ var this$1=this; for (var i=0; i < this.length; i +=1){ this$1[i].removeAttribute(attr); } return this; } function data(key, value){ var this$1=this; var el; if(typeof value==='undefined'){ el=this[0]; if(el){ if(el.dom7ElementDataStorage&&(key in el.dom7ElementDataStorage)){ return el.dom7ElementDataStorage[key]; } var dataKey=el.getAttribute(("data-" + key)); if(dataKey){ return dataKey; } return undefined; } return undefined; } for (var i=0; i < this.length; i +=1){ el=this$1[i]; if(!el.dom7ElementDataStorage){ el.dom7ElementDataStorage={};} el.dom7ElementDataStorage[key]=value; } return this; } function transform(transform){ var this$1=this; for (var i=0; i < this.length; i +=1){ var elStyle=this$1[i].style; elStyle.webkitTransform=transform; elStyle.transform=transform; } return this; } function transition(duration){ var this$1=this; if(typeof duration!=='string'){ duration=duration + "ms"; } for (var i=0; i < this.length; i +=1){ var elStyle=this$1[i].style; elStyle.webkitTransitionDuration=duration; elStyle.transitionDuration=duration; } return this; } function on(){ var this$1=this; var assign; var args=[], len=arguments.length; while(len--) args[ len ]=arguments[ len ]; var eventType=args[0]; var targetSelector=args[1]; var listener=args[2]; var capture=args[3]; if(typeof args[1]==='function'){ (assign=args, eventType=assign[0], listener=assign[1], capture=assign[2]); targetSelector=undefined; } if(!capture){ capture=false; } function handleLiveEvent(e){ var target=e.target; if(!target){ return; } var eventData=e.target.dom7EventData||[]; if(eventData.indexOf(e) < 0){ eventData.unshift(e); } if($(target).is(targetSelector)){ listener.apply(target, eventData); }else{ var parents=$(target).parents(); for (var k=0; k < parents.length; k +=1){ if($(parents[k]).is(targetSelector)){ listener.apply(parents[k], eventData); }} }} function handleEvent(e){ var eventData=e&&e.target ? e.target.dom7EventData||[]:[]; if(eventData.indexOf(e) < 0){ eventData.unshift(e); } listener.apply(this, eventData); } var events=eventType.split(' '); var j; for (var i=0; i < this.length; i +=1){ var el=this$1[i]; if(!targetSelector){ for (j=0; j < events.length; j +=1){ var event=events[j]; if(!el.dom7Listeners){ el.dom7Listeners={};} if(!el.dom7Listeners[event]){ el.dom7Listeners[event]=[]; } el.dom7Listeners[event].push({ listener: listener, proxyListener: handleEvent, }); el.addEventListener(event, handleEvent, capture); }}else{ for (j=0; j < events.length; j +=1){ var event$1=events[j]; if(!el.dom7LiveListeners){ el.dom7LiveListeners={};} if(!el.dom7LiveListeners[event$1]){ el.dom7LiveListeners[event$1]=[]; } el.dom7LiveListeners[event$1].push({ listener: listener, proxyListener: handleLiveEvent, }); el.addEventListener(event$1, handleLiveEvent, capture); }} } return this; } function off(){ var this$1=this; var assign; var args=[], len=arguments.length; while(len--) args[ len ]=arguments[ len ]; var eventType=args[0]; var targetSelector=args[1]; var listener=args[2]; var capture=args[3]; if(typeof args[1]==='function'){ (assign=args, eventType=assign[0], listener=assign[1], capture=assign[2]); targetSelector=undefined; } if(!capture){ capture=false; } var events=eventType.split(' '); for (var i=0; i < events.length; i +=1){ var event=events[i]; for (var j=0; j < this.length; j +=1){ var el=this$1[j]; var handlers=(void 0); if(!targetSelector&&el.dom7Listeners){ handlers=el.dom7Listeners[event]; }else if(targetSelector&&el.dom7LiveListeners){ handlers=el.dom7LiveListeners[event]; } if(handlers&&handlers.length){ for (var k=handlers.length - 1; k >=0; k -=1){ var handler=handlers[k]; if(listener&&handler.listener===listener){ el.removeEventListener(event, handler.proxyListener, capture); handlers.splice(k, 1); }else if(!listener){ el.removeEventListener(event, handler.proxyListener, capture); handlers.splice(k, 1); }} }} } return this; } function trigger(){ var this$1=this; var args=[], len=arguments.length; while(len--) args[ len ]=arguments[ len ]; var events=args[0].split(' '); var eventData=args[1]; for (var i=0; i < events.length; i +=1){ var event=events[i]; for (var j=0; j < this.length; j +=1){ var el=this$1[j]; var evt=(void 0); try { evt=new win.CustomEvent(event, { detail: eventData, bubbles: true, cancelable: true, }); } catch (e){ evt=doc.createEvent('Event'); evt.initEvent(event, true, true); evt.detail=eventData; } el.dom7EventData=args.filter(function (data, dataIndex){ return dataIndex > 0; }); el.dispatchEvent(evt); el.dom7EventData=[]; delete el.dom7EventData; }} return this; } function transitionEnd(callback){ var events=['webkitTransitionEnd', 'transitionend']; var dom=this; var i; function fireCallBack(e){ if(e.target!==this){ return; } callback.call(this, e); for (i=0; i < events.length; i +=1){ dom.off(events[i], fireCallBack); }} if(callback){ for (i=0; i < events.length; i +=1){ dom.on(events[i], fireCallBack); }} return this; } function outerWidth(includeMargins){ if(this.length > 0){ if(includeMargins){ var styles=this.styles(); return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); } return this[0].offsetWidth; } return null; } function outerHeight(includeMargins){ if(this.length > 0){ if(includeMargins){ var styles=this.styles(); return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); } return this[0].offsetHeight; } return null; } function offset(){ if(this.length > 0){ var el=this[0]; var box=el.getBoundingClientRect(); var body=doc.body; var clientTop=el.clientTop||body.clientTop||0; var clientLeft=el.clientLeft||body.clientLeft||0; var scrollTop=el===win ? win.scrollY:el.scrollTop; var scrollLeft=el===win ? win.scrollX:el.scrollLeft; return { top: (box.top + scrollTop) - clientTop, left: (box.left + scrollLeft) - clientLeft, };} return null; } function styles(){ if(this[0]){ return win.getComputedStyle(this[0], null); } return {};} function css(props, value){ var this$1=this; var i; if(arguments.length===1){ if(typeof props==='string'){ if(this[0]){ return win.getComputedStyle(this[0], null).getPropertyValue(props); }}else{ for (i=0; i < this.length; i +=1){ for (var prop in props){ this$1[i].style[prop]=props[prop]; }} return this; }} if(arguments.length===2&&typeof props==='string'){ for (i=0; i < this.length; i +=1){ this$1[i].style[props]=value; } return this; } return this; } function each(callback){ var this$1=this; if(!callback){ return this; } for (var i=0; i < this.length; i +=1){ if(callback.call(this$1[i], i, this$1[i])===false){ return this$1; }} return this; } function html(html){ var this$1=this; if(typeof html==='undefined'){ return this[0] ? this[0].innerHTML:undefined; } for (var i=0; i < this.length; i +=1){ this$1[i].innerHTML=html; } return this; } function text(text){ var this$1=this; if(typeof text==='undefined'){ if(this[0]){ return this[0].textContent.trim(); } return null; } for (var i=0; i < this.length; i +=1){ this$1[i].textContent=text; } return this; } function is(selector){ var el=this[0]; var compareWith; var i; if(!el||typeof selector==='undefined'){ return false; } if(typeof selector==='string'){ if(el.matches){ return el.matches(selector); } else if(el.webkitMatchesSelector){ return el.webkitMatchesSelector(selector); } else if(el.msMatchesSelector){ return el.msMatchesSelector(selector); } compareWith=$(selector); for (i=0; i < compareWith.length; i +=1){ if(compareWith[i]===el){ return true; }} return false; }else if(selector===doc){ return el===doc; } else if(selector===win){ return el===win; } if(selector.nodeType||selector instanceof Dom7){ compareWith=selector.nodeType ? [selector]:selector; for (i=0; i < compareWith.length; i +=1){ if(compareWith[i]===el){ return true; }} return false; } return false; } function index(){ var child=this[0]; var i; if(child){ i=0; while ((child=child.previousSibling)!==null){ if(child.nodeType===1){ i +=1; }} return i; } return undefined; } function eq(index){ if(typeof index==='undefined'){ return this; } var length=this.length; var returnIndex; if(index > length - 1){ return new Dom7([]); } if(index < 0){ returnIndex=length + index; if(returnIndex < 0){ return new Dom7([]); } return new Dom7([this[returnIndex]]); } return new Dom7([this[index]]); } function append(){ var this$1=this; var args=[], len=arguments.length; while(len--) args[ len ]=arguments[ len ]; var newChild; for (var k=0; k < args.length; k +=1){ newChild=args[k]; for (var i=0; i < this.length; i +=1){ if(typeof newChild==='string'){ var tempDiv=doc.createElement('div'); tempDiv.innerHTML=newChild; while (tempDiv.firstChild){ this$1[i].appendChild(tempDiv.firstChild); }}else if(newChild instanceof Dom7){ for (var j=0; j < newChild.length; j +=1){ this$1[i].appendChild(newChild[j]); }}else{ this$1[i].appendChild(newChild); }} } return this; } function prepend(newChild){ var this$1=this; var i; var j; for (i=0; i < this.length; i +=1){ if(typeof newChild==='string'){ var tempDiv=doc.createElement('div'); tempDiv.innerHTML=newChild; for (j=tempDiv.childNodes.length - 1; j >=0; j -=1){ this$1[i].insertBefore(tempDiv.childNodes[j], this$1[i].childNodes[0]); }}else if(newChild instanceof Dom7){ for (j=0; j < newChild.length; j +=1){ this$1[i].insertBefore(newChild[j], this$1[i].childNodes[0]); }}else{ this$1[i].insertBefore(newChild, this$1[i].childNodes[0]); }} return this; } function next(selector){ if(this.length > 0){ if(selector){ if(this[0].nextElementSibling&&$(this[0].nextElementSibling).is(selector)){ return new Dom7([this[0].nextElementSibling]); } return new Dom7([]); } if(this[0].nextElementSibling){ return new Dom7([this[0].nextElementSibling]); } return new Dom7([]); } return new Dom7([]); } function nextAll(selector){ var nextEls=[]; var el=this[0]; if(!el){ return new Dom7([]); } while (el.nextElementSibling){ var next=el.nextElementSibling; if(selector){ if($(next).is(selector)){ nextEls.push(next); }}else{ nextEls.push(next); } el=next; } return new Dom7(nextEls); } function prev(selector){ if(this.length > 0){ var el=this[0]; if(selector){ if(el.previousElementSibling&&$(el.previousElementSibling).is(selector)){ return new Dom7([el.previousElementSibling]); } return new Dom7([]); } if(el.previousElementSibling){ return new Dom7([el.previousElementSibling]); } return new Dom7([]); } return new Dom7([]); } function prevAll(selector){ var prevEls=[]; var el=this[0]; if(!el){ return new Dom7([]); } while (el.previousElementSibling){ var prev=el.previousElementSibling; if(selector){ if($(prev).is(selector)){ prevEls.push(prev); }}else{ prevEls.push(prev); } el=prev; } return new Dom7(prevEls); } function parent(selector){ var this$1=this; var parents=[]; for (var i=0; i < this.length; i +=1){ if(this$1[i].parentNode!==null){ if(selector){ if($(this$1[i].parentNode).is(selector)){ parents.push(this$1[i].parentNode); }}else{ parents.push(this$1[i].parentNode); }} } return $(unique(parents)); } function parents(selector){ var this$1=this; var parents=[]; for (var i=0; i < this.length; i +=1){ var parent=this$1[i].parentNode; while (parent){ if(selector){ if($(parent).is(selector)){ parents.push(parent); }}else{ parents.push(parent); } parent=parent.parentNode; }} return $(unique(parents)); } function closest(selector){ var closest=this; if(typeof selector==='undefined'){ return new Dom7([]); } if(!closest.is(selector)){ closest=closest.parents(selector).eq(0); } return closest; } function find(selector){ var this$1=this; var foundElements=[]; for (var i=0; i < this.length; i +=1){ var found=this$1[i].querySelectorAll(selector); for (var j=0; j < found.length; j +=1){ foundElements.push(found[j]); }} return new Dom7(foundElements); } function children(selector){ var this$1=this; var children=[]; for (var i=0; i < this.length; i +=1){ var childNodes=this$1[i].childNodes; for (var j=0; j < childNodes.length; j +=1){ if(!selector){ if(childNodes[j].nodeType===1){ children.push(childNodes[j]); }}else if(childNodes[j].nodeType===1&&$(childNodes[j]).is(selector)){ children.push(childNodes[j]); }} } return new Dom7(unique(children)); } function remove(){ var this$1=this; for (var i=0; i < this.length; i +=1){ if(this$1[i].parentNode){ this$1[i].parentNode.removeChild(this$1[i]); }} return this; } function add(){ var args=[], len=arguments.length; while(len--) args[ len ]=arguments[ len ]; var dom=this; var i; var j; for (i=0; i < args.length; i +=1){ var toAdd=$(args[i]); for (j=0; j < toAdd.length; j +=1){ dom[dom.length]=toAdd[j]; dom.length +=1; }} return dom; } var Methods={ addClass: addClass, removeClass: removeClass, hasClass: hasClass, toggleClass: toggleClass, attr: attr, removeAttr: removeAttr, data: data, transform: transform, transition: transition, on: on, off: off, trigger: trigger, transitionEnd: transitionEnd, outerWidth: outerWidth, outerHeight: outerHeight, offset: offset, css: css, each: each, html: html, text: text, is: is, index: index, eq: eq, append: append, prepend: prepend, next: next, nextAll: nextAll, prev: prev, prevAll: prevAll, parent: parent, parents: parents, closest: closest, find: find, children: children, remove: remove, add: add, styles: styles, }; Object.keys(Methods).forEach(function (methodName){ $.fn[methodName]=Methods[methodName]; }); var Utils={ deleteProps: function deleteProps(obj){ var object=obj; Object.keys(object).forEach(function (key){ try { object[key]=null; } catch (e){ } try { delete object[key]; } catch (e){ }}); }, nextTick: function nextTick(callback, delay){ if(delay===void 0) delay=0; return setTimeout(callback, delay); }, now: function now(){ return Date.now(); }, getTranslate: function getTranslate(el, axis){ if(axis===void 0) axis='x'; var matrix; var curTransform; var transformMatrix; var curStyle=win.getComputedStyle(el, null); if(win.WebKitCSSMatrix){ curTransform=curStyle.transform||curStyle.webkitTransform; if(curTransform.split(',').length > 6){ curTransform=curTransform.split(', ').map(function (a){ return a.replace(',', '.'); }).join(', '); } transformMatrix=new win.WebKitCSSMatrix(curTransform==='none' ? '':curTransform); }else{ transformMatrix=curStyle.MozTransform||curStyle.OTransform||curStyle.MsTransform||curStyle.msTransform||curStyle.transform||curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); matrix=transformMatrix.toString().split(','); } if(axis==='x'){ if(win.WebKitCSSMatrix){ curTransform=transformMatrix.m41; } else if(matrix.length===16){ curTransform=parseFloat(matrix[12]); }else{ curTransform=parseFloat(matrix[4]); }} if(axis==='y'){ if(win.WebKitCSSMatrix){ curTransform=transformMatrix.m42; } else if(matrix.length===16){ curTransform=parseFloat(matrix[13]); }else{ curTransform=parseFloat(matrix[5]); }} return curTransform||0; }, parseUrlQuery: function parseUrlQuery(url){ var query={}; var urlToParse=url||win.location.href; var i; var params; var param; var length; if(typeof urlToParse==='string'&&urlToParse.length){ urlToParse=urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, ''):''; params=urlToParse.split('&').filter(function (paramsPart){ return paramsPart!==''; }); length=params.length; for (i=0; i < length; i +=1){ param=params[i].replace(/#\S+/g, '').split('='); query[decodeURIComponent(param[0])]=typeof param[1]==='undefined' ? undefined:decodeURIComponent(param[1])||''; }} return query; }, isObject: function isObject(o){ return typeof o==='object'&&o!==null&&o.constructor&&o.constructor===Object; }, extend: function extend(){ var args=[], len$1=arguments.length; while(len$1--) args[ len$1 ]=arguments[ len$1 ]; var to=Object(args[0]); for (var i=1; i < args.length; i +=1){ var nextSource=args[i]; if(nextSource!==undefined&&nextSource!==null){ var keysArray=Object.keys(Object(nextSource)); for (var nextIndex=0, len=keysArray.length; nextIndex < len; nextIndex +=1){ var nextKey=keysArray[nextIndex]; var desc=Object.getOwnPropertyDescriptor(nextSource, nextKey); if(desc!==undefined&&desc.enumerable){ if(Utils.isObject(to[nextKey])&&Utils.isObject(nextSource[nextKey])){ Utils.extend(to[nextKey], nextSource[nextKey]); }else if(!Utils.isObject(to[nextKey])&&Utils.isObject(nextSource[nextKey])){ to[nextKey]={}; Utils.extend(to[nextKey], nextSource[nextKey]); }else{ to[nextKey]=nextSource[nextKey]; }} }} } return to; }, }; var Support=(function Support(){ var testDiv=doc.createElement('div'); return { touch: (win.Modernizr&&win.Modernizr.touch===true)||(function checkTouch(){ return !!(('ontouchstart' in win)||(win.DocumentTouch&&doc instanceof win.DocumentTouch)); }()), pointerEvents: !!(win.navigator.pointerEnabled||win.PointerEvent), prefixedPointerEvents: !!win.navigator.msPointerEnabled, transition: (function checkTransition(){ var style=testDiv.style; return ('transition' in style||'webkitTransition' in style||'MozTransition' in style); }()), transforms3d: (win.Modernizr&&win.Modernizr.csstransforms3d===true)||(function checkTransforms3d(){ var style=testDiv.style; return ('webkitPerspective' in style||'MozPerspective' in style||'OPerspective' in style||'MsPerspective' in style||'perspective' in style); }()), flexbox: (function checkFlexbox(){ var style=testDiv.style; var styles=('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); for (var i=0; i < styles.length; i +=1){ if(styles[i] in style){ return true; }} return false; }()), observer: (function checkObserver(){ return ('MutationObserver' in win||'WebkitMutationObserver' in win); }()), passiveListener: (function checkPassiveListener(){ var supportsPassive=false; try { var opts=Object.defineProperty({}, 'passive', { get: function get(){ supportsPassive=true; }, }); win.addEventListener('testPassiveListener', null, opts); } catch (e){ } return supportsPassive; }()), gestures: (function checkGestures(){ return 'ongesturestart' in win; }()), };}()); var SwiperClass=function SwiperClass(params){ if(params===void 0) params={}; var self=this; self.params=params; self.eventsListeners={}; if(self.params&&self.params.on){ Object.keys(self.params.on).forEach(function (eventName){ self.on(eventName, self.params.on[eventName]); }); }}; var staticAccessors={ components: { configurable: true }}; SwiperClass.prototype.on=function on (events, handler, priority){ var self=this; if(typeof handler!=='function'){ return self; } var method=priority ? 'unshift':'push'; events.split(' ').forEach(function (event){ if(!self.eventsListeners[event]){ self.eventsListeners[event]=[]; } self.eventsListeners[event][method](handler); }); return self; }; SwiperClass.prototype.once=function once (events, handler, priority){ var self=this; if(typeof handler!=='function'){ return self; } function onceHandler(){ var args=[], len=arguments.length; while(len--) args[ len ]=arguments[ len ]; handler.apply(self, args); self.off(events, onceHandler); } return self.on(events, onceHandler, priority); }; SwiperClass.prototype.off=function off (events, handler){ var self=this; if(!self.eventsListeners){ return self; } events.split(' ').forEach(function (event){ if(typeof handler==='undefined'){ self.eventsListeners[event]=[]; }else if(self.eventsListeners[event]&&self.eventsListeners[event].length){ self.eventsListeners[event].forEach(function (eventHandler, index){ if(eventHandler===handler){ self.eventsListeners[event].splice(index, 1); }}); }}); return self; }; SwiperClass.prototype.emit=function emit (){ var args=[], len=arguments.length; while(len--) args[ len ]=arguments[ len ]; var self=this; if(!self.eventsListeners){ return self; } var events; var data; var context; if(typeof args[0]==='string'||Array.isArray(args[0])){ events=args[0]; data=args.slice(1, args.length); context=self; }else{ events=args[0].events; data=args[0].data; context=args[0].context||self; } var eventsArray=Array.isArray(events) ? events:events.split(' '); eventsArray.forEach(function (event){ if(self.eventsListeners&&self.eventsListeners[event]){ var handlers=[]; self.eventsListeners[event].forEach(function (eventHandler){ handlers.push(eventHandler); }); handlers.forEach(function (eventHandler){ eventHandler.apply(context, data); }); }}); return self; }; SwiperClass.prototype.useModulesParams=function useModulesParams (instanceParams){ var instance=this; if(!instance.modules){ return; } Object.keys(instance.modules).forEach(function (moduleName){ var module=instance.modules[moduleName]; if(module.params){ Utils.extend(instanceParams, module.params); }}); }; SwiperClass.prototype.useModules=function useModules (modulesParams){ if(modulesParams===void 0) modulesParams={}; var instance=this; if(!instance.modules){ return; } Object.keys(instance.modules).forEach(function (moduleName){ var module=instance.modules[moduleName]; var moduleParams=modulesParams[moduleName]||{}; if(module.instance){ Object.keys(module.instance).forEach(function (modulePropName){ var moduleProp=module.instance[modulePropName]; if(typeof moduleProp==='function'){ instance[modulePropName]=moduleProp.bind(instance); }else{ instance[modulePropName]=moduleProp; }}); } if(module.on&&instance.on){ Object.keys(module.on).forEach(function (moduleEventName){ instance.on(moduleEventName, module.on[moduleEventName]); }); } if(module.create){ module.create.bind(instance)(moduleParams); }}); }; staticAccessors.components.set=function (components){ var Class=this; if(!Class.use){ return; } Class.use(components); }; SwiperClass.installModule=function installModule (module){ var params=[], len=arguments.length - 1; while(len-- > 0) params[ len ]=arguments[ len + 1 ]; var Class=this; if(!Class.prototype.modules){ Class.prototype.modules={};} var name=module.name||(((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now()))); Class.prototype.modules[name]=module; if(module.proto){ Object.keys(module.proto).forEach(function (key){ Class.prototype[key]=module.proto[key]; }); } if(module.static){ Object.keys(module.static).forEach(function (key){ Class[key]=module.static[key]; }); } if(module.install){ module.install.apply(Class, params); } return Class; }; SwiperClass.use=function use (module){ var params=[], len=arguments.length - 1; while(len-- > 0) params[ len ]=arguments[ len + 1 ]; var Class=this; if(Array.isArray(module)){ module.forEach(function (m){ return Class.installModule(m); }); return Class; } return Class.installModule.apply(Class, [ module ].concat(params)); }; Object.defineProperties(SwiperClass, staticAccessors); function updateSize (){ var swiper=this; var width; var height; var $el=swiper.$el; if(typeof swiper.params.width!=='undefined'){ width=swiper.params.width; }else{ width=$el[0].clientWidth; } if(typeof swiper.params.height!=='undefined'){ height=swiper.params.height; }else{ height=$el[0].clientHeight; } if((width===0&&swiper.isHorizontal())||(height===0&&swiper.isVertical())){ return; } width=width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); height=height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); Utils.extend(swiper, { width: width, height: height, size: swiper.isHorizontal() ? width:height, }); } function updateSlides (){ var swiper=this; var params=swiper.params; var $wrapperEl=swiper.$wrapperEl; var swiperSize=swiper.size; var rtl=swiper.rtlTranslate; var wrongRTL=swiper.wrongRTL; var isVirtual=swiper.virtual&¶ms.virtual.enabled; var previousSlidesLength=isVirtual ? swiper.virtual.slides.length:swiper.slides.length; var slides=$wrapperEl.children(("." + (swiper.params.slideClass))); var slidesLength=isVirtual ? swiper.virtual.slides.length:slides.length; var snapGrid=[]; var slidesGrid=[]; var slidesSizesGrid=[]; var offsetBefore=params.slidesOffsetBefore; if(typeof offsetBefore==='function'){ offsetBefore=params.slidesOffsetBefore.call(swiper); } var offsetAfter=params.slidesOffsetAfter; if(typeof offsetAfter==='function'){ offsetAfter=params.slidesOffsetAfter.call(swiper); } var previousSnapGridLength=swiper.snapGrid.length; var previousSlidesGridLength=swiper.snapGrid.length; var spaceBetween=params.spaceBetween; var slidePosition=-offsetBefore; var prevSlideSize=0; var index=0; if(typeof swiperSize==='undefined'){ return; } if(typeof spaceBetween==='string'&&spaceBetween.indexOf('%') >=0){ spaceBetween=(parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; } swiper.virtualSize=-spaceBetween; if(rtl){ slides.css({ marginLeft: '', marginTop: '' });}else{ slides.css({ marginRight: '', marginBottom: '' });} var slidesNumberEvenToRows; if(params.slidesPerColumn > 1){ if(Math.floor(slidesLength / params.slidesPerColumn)===slidesLength / swiper.params.slidesPerColumn){ slidesNumberEvenToRows=slidesLength; }else{ slidesNumberEvenToRows=Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; } if(params.slidesPerView!=='auto'&¶ms.slidesPerColumnFill==='row'){ slidesNumberEvenToRows=Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); }} var slideSize; var slidesPerColumn=params.slidesPerColumn; var slidesPerRow=slidesNumberEvenToRows / slidesPerColumn; var numFullColumns=slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength); for (var i=0; i < slidesLength; i +=1){ slideSize=0; var slide=slides.eq(i); if(params.slidesPerColumn > 1){ var newSlideOrderIndex=(void 0); var column=(void 0); var row=(void 0); if(params.slidesPerColumnFill==='column'){ column=Math.floor(i / slidesPerColumn); row=i - (column * slidesPerColumn); if(column > numFullColumns||(column===numFullColumns&&row===slidesPerColumn - 1)){ row +=1; if(row >=slidesPerColumn){ row=0; column +=1; }} newSlideOrderIndex=column + ((row * slidesNumberEvenToRows) / slidesPerColumn); slide .css({ '-webkit-box-ordinal-group': newSlideOrderIndex, '-moz-box-ordinal-group': newSlideOrderIndex, '-ms-flex-order': newSlideOrderIndex, '-webkit-order': newSlideOrderIndex, order: newSlideOrderIndex, }); }else{ row=Math.floor(i / slidesPerRow); column=i - (row * slidesPerRow); } slide .css(("margin-" + (swiper.isHorizontal() ? 'top':'left')), (row!==0&¶ms.spaceBetween)&&(((params.spaceBetween) + "px")) ) .attr('data-swiper-column', column) .attr('data-swiper-row', row); } if(slide.css('display')==='none'){ continue; } if(params.slidesPerView==='auto'){ var slideStyles=win.getComputedStyle(slide[0], null); var currentTransform=slide[0].style.transform; var currentWebKitTransform=slide[0].style.webkitTransform; if(currentTransform){ slide[0].style.transform='none'; } if(currentWebKitTransform){ slide[0].style.webkitTransform='none'; } if(params.roundLengths){ slideSize=swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); }else{ if(swiper.isHorizontal()){ slideSize=slide[0].getBoundingClientRect().width + parseFloat(slideStyles.getPropertyValue('margin-left')) + parseFloat(slideStyles.getPropertyValue('margin-right')); }else{ slideSize=slide[0].getBoundingClientRect().height + parseFloat(slideStyles.getPropertyValue('margin-top')) + parseFloat(slideStyles.getPropertyValue('margin-bottom')); }} if(currentTransform){ slide[0].style.transform=currentTransform; } if(currentWebKitTransform){ slide[0].style.webkitTransform=currentWebKitTransform; } if(params.roundLengths){ slideSize=Math.floor(slideSize); }}else{ slideSize=(swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; if(params.roundLengths){ slideSize=Math.floor(slideSize); } if(slides[i]){ if(swiper.isHorizontal()){ slides[i].style.width=slideSize + "px"; }else{ slides[i].style.height=slideSize + "px"; }} } if(slides[i]){ slides[i].swiperSlideSize=slideSize; } slidesSizesGrid.push(slideSize); if(params.centeredSlides){ slidePosition=slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; if(prevSlideSize===0&&i!==0){ slidePosition=slidePosition - (swiperSize / 2) - spaceBetween; } if(i===0){ slidePosition=slidePosition - (swiperSize / 2) - spaceBetween; } if(Math.abs(slidePosition) < 1 / 1000){ slidePosition=0; } if(params.roundLengths){ slidePosition=Math.floor(slidePosition); } if((index) % params.slidesPerGroup===0){ snapGrid.push(slidePosition); } slidesGrid.push(slidePosition); }else{ if(params.roundLengths){ slidePosition=Math.floor(slidePosition); } if((index) % params.slidesPerGroup===0){ snapGrid.push(slidePosition); } slidesGrid.push(slidePosition); slidePosition=slidePosition + slideSize + spaceBetween; } swiper.virtualSize +=slideSize + spaceBetween; prevSlideSize=slideSize; index +=1; } swiper.virtualSize=Math.max(swiper.virtualSize, swiperSize) + offsetAfter; var newSlidesGrid; if(rtl&&wrongRTL&&(params.effect==='slide'||params.effect==='coverflow')){ $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } if(!Support.flexbox||params.setWrapperSize){ if(swiper.isHorizontal()){ $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") });}else{ $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") });}} if(params.slidesPerColumn > 1){ swiper.virtualSize=(slideSize + params.spaceBetween) * slidesNumberEvenToRows; swiper.virtualSize=Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; if(swiper.isHorizontal()){ $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") });}else{ $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") });} if(params.centeredSlides){ newSlidesGrid=[]; for (var i$1=0; i$1 < snapGrid.length; i$1 +=1){ var slidesGridItem=snapGrid[i$1]; if(params.roundLengths){ slidesGridItem=Math.floor(slidesGridItem); } if(snapGrid[i$1] < swiper.virtualSize + snapGrid[0]){ newSlidesGrid.push(slidesGridItem); }} snapGrid=newSlidesGrid; }} if(!params.centeredSlides){ newSlidesGrid=[]; for (var i$2=0; i$2 < snapGrid.length; i$2 +=1){ var slidesGridItem$1=snapGrid[i$2]; if(params.roundLengths){ slidesGridItem$1=Math.floor(slidesGridItem$1); } if(snapGrid[i$2] <=swiper.virtualSize - swiperSize){ newSlidesGrid.push(slidesGridItem$1); }} snapGrid=newSlidesGrid; if(Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1){ snapGrid.push(swiper.virtualSize - swiperSize); }} if(snapGrid.length===0){ snapGrid=[0]; } if(params.spaceBetween!==0){ if(swiper.isHorizontal()){ if(rtl){ slides.css({ marginLeft: (spaceBetween + "px") });}else{ slides.css({ marginRight: (spaceBetween + "px") });}}else{ slides.css({ marginBottom: (spaceBetween + "px") });}} if(params.centerInsufficientSlides){ var allSlidesSize=0; slidesSizesGrid.forEach(function (slideSizeValue){ allSlidesSize +=slideSizeValue + (params.spaceBetween ? params.spaceBetween:0); }); allSlidesSize -=params.spaceBetween; if(allSlidesSize < swiperSize){ var allSlidesOffset=(swiperSize - allSlidesSize) / 2; snapGrid.forEach(function (snap, snapIndex){ snapGrid[snapIndex]=snap - allSlidesOffset; }); slidesGrid.forEach(function (snap, snapIndex){ slidesGrid[snapIndex]=snap + allSlidesOffset; }); }} Utils.extend(swiper, { slides: slides, snapGrid: snapGrid, slidesGrid: slidesGrid, slidesSizesGrid: slidesSizesGrid, }); if(slidesLength!==previousSlidesLength){ swiper.emit('slidesLengthChange'); } if(snapGrid.length!==previousSnapGridLength){ if(swiper.params.watchOverflow){ swiper.checkOverflow(); } swiper.emit('snapGridLengthChange'); } if(slidesGrid.length!==previousSlidesGridLength){ swiper.emit('slidesGridLengthChange'); } if(params.watchSlidesProgress||params.watchSlidesVisibility){ swiper.updateSlidesOffset(); }} function updateAutoHeight (speed){ var swiper=this; var activeSlides=[]; var newHeight=0; var i; if(typeof speed==='number'){ swiper.setTransition(speed); }else if(speed===true){ swiper.setTransition(swiper.params.speed); } if(swiper.params.slidesPerView!=='auto'&&swiper.params.slidesPerView > 1){ for (i=0; i < Math.ceil(swiper.params.slidesPerView); i +=1){ var index=swiper.activeIndex + i; if(index > swiper.slides.length){ break; } activeSlides.push(swiper.slides.eq(index)[0]); }}else{ activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); } for (i=0; i < activeSlides.length; i +=1){ if(typeof activeSlides[i]!=='undefined'){ var height=activeSlides[i].offsetHeight; newHeight=height > newHeight ? height:newHeight; }} if(newHeight){ swiper.$wrapperEl.css('height', (newHeight + "px")); }} function updateSlidesOffset (){ var swiper=this; var slides=swiper.slides; for (var i=0; i < slides.length; i +=1){ slides[i].swiperSlideOffset=swiper.isHorizontal() ? slides[i].offsetLeft:slides[i].offsetTop; }} function updateSlidesProgress (translate){ if(translate===void 0) translate=(this&&this.translate)||0; var swiper=this; var params=swiper.params; var slides=swiper.slides; var rtl=swiper.rtlTranslate; if(slides.length===0){ return; } if(typeof slides[0].swiperSlideOffset==='undefined'){ swiper.updateSlidesOffset(); } var offsetCenter=-translate; if(rtl){ offsetCenter=translate; } slides.removeClass(params.slideVisibleClass); swiper.visibleSlidesIndexes=[]; swiper.visibleSlides=[]; for (var i=0; i < slides.length; i +=1){ var slide=slides[i]; var slideProgress=( (offsetCenter + (params.centeredSlides ? swiper.minTranslate():0)) - slide.swiperSlideOffset ) / (slide.swiperSlideSize + params.spaceBetween); if(params.watchSlidesVisibility){ var slideBefore=-(offsetCenter - slide.swiperSlideOffset); var slideAfter=slideBefore + swiper.slidesSizesGrid[i]; var isVisible=(slideBefore >=0&&slideBefore < swiper.size) || (slideAfter > 0&&slideAfter <=swiper.size) || (slideBefore <=0&&slideAfter >=swiper.size); if(isVisible){ swiper.visibleSlides.push(slide); swiper.visibleSlidesIndexes.push(i); slides.eq(i).addClass(params.slideVisibleClass); }} slide.progress=rtl ? -slideProgress:slideProgress; } swiper.visibleSlides=$(swiper.visibleSlides); } function updateProgress (translate){ if(translate===void 0) translate=(this&&this.translate)||0; var swiper=this; var params=swiper.params; var translatesDiff=swiper.maxTranslate() - swiper.minTranslate(); var progress=swiper.progress; var isBeginning=swiper.isBeginning; var isEnd=swiper.isEnd; var wasBeginning=isBeginning; var wasEnd=isEnd; if(translatesDiff===0){ progress=0; isBeginning=true; isEnd=true; }else{ progress=(translate - swiper.minTranslate()) / (translatesDiff); isBeginning=progress <=0; isEnd=progress >=1; } Utils.extend(swiper, { progress: progress, isBeginning: isBeginning, isEnd: isEnd, }); if(params.watchSlidesProgress||params.watchSlidesVisibility){ swiper.updateSlidesProgress(translate); } if(isBeginning&&!wasBeginning){ swiper.emit('reachBeginning toEdge'); } if(isEnd&&!wasEnd){ swiper.emit('reachEnd toEdge'); } if((wasBeginning&&!isBeginning)||(wasEnd&&!isEnd)){ swiper.emit('fromEdge'); } swiper.emit('progress', progress); } function updateSlidesClasses (){ var swiper=this; var slides=swiper.slides; var params=swiper.params; var $wrapperEl=swiper.$wrapperEl; var activeIndex=swiper.activeIndex; var realIndex=swiper.realIndex; var isVirtual=swiper.virtual&¶ms.virtual.enabled; slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass))); var activeSlide; if(isVirtual){ activeSlide=swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]")); }else{ activeSlide=slides.eq(activeIndex); } activeSlide.addClass(params.slideActiveClass); if(params.loop){ if(activeSlide.hasClass(params.slideDuplicateClass)){ $wrapperEl .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]")) .addClass(params.slideDuplicateActiveClass); }else{ $wrapperEl .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]")) .addClass(params.slideDuplicateActiveClass); }} var nextSlide=activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass); if(params.loop&&nextSlide.length===0){ nextSlide=slides.eq(0); nextSlide.addClass(params.slideNextClass); } var prevSlide=activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass); if(params.loop&&prevSlide.length===0){ prevSlide=slides.eq(-1); prevSlide.addClass(params.slidePrevClass); } if(params.loop){ if(nextSlide.hasClass(params.slideDuplicateClass)){ $wrapperEl .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) .addClass(params.slideDuplicateNextClass); }else{ $wrapperEl .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) .addClass(params.slideDuplicateNextClass); } if(prevSlide.hasClass(params.slideDuplicateClass)){ $wrapperEl .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) .addClass(params.slideDuplicatePrevClass); }else{ $wrapperEl .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) .addClass(params.slideDuplicatePrevClass); }} } function updateActiveIndex (newActiveIndex){ var swiper=this; var translate=swiper.rtlTranslate ? swiper.translate:-swiper.translate; var slidesGrid=swiper.slidesGrid; var snapGrid=swiper.snapGrid; var params=swiper.params; var previousIndex=swiper.activeIndex; var previousRealIndex=swiper.realIndex; var previousSnapIndex=swiper.snapIndex; var activeIndex=newActiveIndex; var snapIndex; if(typeof activeIndex==='undefined'){ for (var i=0; i < slidesGrid.length; i +=1){ if(typeof slidesGrid[i + 1]!=='undefined'){ if(translate >=slidesGrid[i]&&translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)){ activeIndex=i; }else if(translate >=slidesGrid[i]&&translate < slidesGrid[i + 1]){ activeIndex=i + 1; }}else if(translate >=slidesGrid[i]){ activeIndex=i; }} if(params.normalizeSlideIndex){ if(activeIndex < 0||typeof activeIndex==='undefined'){ activeIndex=0; }} } if(snapGrid.indexOf(translate) >=0){ snapIndex=snapGrid.indexOf(translate); }else{ snapIndex=Math.floor(activeIndex / params.slidesPerGroup); } if(snapIndex >=snapGrid.length){ snapIndex=snapGrid.length - 1; } if(activeIndex===previousIndex){ if(snapIndex!==previousSnapIndex){ swiper.snapIndex=snapIndex; swiper.emit('snapIndexChange'); } return; } var realIndex=parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index')||activeIndex, 10); Utils.extend(swiper, { snapIndex: snapIndex, realIndex: realIndex, previousIndex: previousIndex, activeIndex: activeIndex, }); swiper.emit('activeIndexChange'); swiper.emit('snapIndexChange'); if(previousRealIndex!==realIndex){ swiper.emit('realIndexChange'); } swiper.emit('slideChange'); } function updateClickedSlide (e){ var swiper=this; var params=swiper.params; var slide=$(e.target).closest(("." + (params.slideClass)))[0]; var slideFound=false; if(slide){ for (var i=0; i < swiper.slides.length; i +=1){ if(swiper.slides[i]===slide){ slideFound=true; }} } if(slide&&slideFound){ swiper.clickedSlide=slide; if(swiper.virtual&&swiper.params.virtual.enabled){ swiper.clickedIndex=parseInt($(slide).attr('data-swiper-slide-index'), 10); }else{ swiper.clickedIndex=$(slide).index(); }}else{ swiper.clickedSlide=undefined; swiper.clickedIndex=undefined; return; } if(params.slideToClickedSlide&&swiper.clickedIndex!==undefined&&swiper.clickedIndex!==swiper.activeIndex){ swiper.slideToClickedSlide(); }} var update={ updateSize: updateSize, updateSlides: updateSlides, updateAutoHeight: updateAutoHeight, updateSlidesOffset: updateSlidesOffset, updateSlidesProgress: updateSlidesProgress, updateProgress: updateProgress, updateSlidesClasses: updateSlidesClasses, updateActiveIndex: updateActiveIndex, updateClickedSlide: updateClickedSlide, }; function getTranslate (axis){ if(axis===void 0) axis=this.isHorizontal() ? 'x':'y'; var swiper=this; var params=swiper.params; var rtl=swiper.rtlTranslate; var translate=swiper.translate; var $wrapperEl=swiper.$wrapperEl; if(params.virtualTranslate){ return rtl ? -translate:translate; } var currentTranslate=Utils.getTranslate($wrapperEl[0], axis); if(rtl){ currentTranslate=-currentTranslate; } return currentTranslate||0; } function setTranslate (translate, byController){ var swiper=this; var rtl=swiper.rtlTranslate; var params=swiper.params; var $wrapperEl=swiper.$wrapperEl; var progress=swiper.progress; var x=0; var y=0; var z=0; if(swiper.isHorizontal()){ x=rtl ? -translate:translate; }else{ y=translate; } if(params.roundLengths){ x=Math.floor(x); y=Math.floor(y); } if(!params.virtualTranslate){ if(Support.transforms3d){ $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); }else{ $wrapperEl.transform(("translate(" + x + "px, " + y + "px)")); }} swiper.previousTranslate=swiper.translate; swiper.translate=swiper.isHorizontal() ? x:y; var newProgress; var translatesDiff=swiper.maxTranslate() - swiper.minTranslate(); if(translatesDiff===0){ newProgress=0; }else{ newProgress=(translate - swiper.minTranslate()) / (translatesDiff); } if(newProgress!==progress){ swiper.updateProgress(translate); } swiper.emit('setTranslate', swiper.translate, byController); } function minTranslate (){ return (-this.snapGrid[0]); } function maxTranslate (){ return (-this.snapGrid[this.snapGrid.length - 1]); } var translate={ getTranslate: getTranslate, setTranslate: setTranslate, minTranslate: minTranslate, maxTranslate: maxTranslate, }; function setTransition (duration, byController){ var swiper=this; swiper.$wrapperEl.transition(duration); swiper.emit('setTransition', duration, byController); } function transitionStart (runCallbacks, direction){ if(runCallbacks===void 0) runCallbacks=true; var swiper=this; var activeIndex=swiper.activeIndex; var params=swiper.params; var previousIndex=swiper.previousIndex; if(params.autoHeight){ swiper.updateAutoHeight(); } var dir=direction; if(!dir){ if(activeIndex > previousIndex){ dir='next'; } else if(activeIndex < previousIndex){ dir='prev'; }else{ dir='reset'; }} swiper.emit('transitionStart'); if(runCallbacks&&activeIndex!==previousIndex){ if(dir==='reset'){ swiper.emit('slideResetTransitionStart'); return; } swiper.emit('slideChangeTransitionStart'); if(dir==='next'){ swiper.emit('slideNextTransitionStart'); }else{ swiper.emit('slidePrevTransitionStart'); }} } function transitionEnd$1 (runCallbacks, direction){ if(runCallbacks===void 0) runCallbacks=true; var swiper=this; var activeIndex=swiper.activeIndex; var previousIndex=swiper.previousIndex; swiper.animating=false; swiper.setTransition(0); var dir=direction; if(!dir){ if(activeIndex > previousIndex){ dir='next'; } else if(activeIndex < previousIndex){ dir='prev'; }else{ dir='reset'; }} swiper.emit('transitionEnd'); if(runCallbacks&&activeIndex!==previousIndex){ if(dir==='reset'){ swiper.emit('slideResetTransitionEnd'); return; } swiper.emit('slideChangeTransitionEnd'); if(dir==='next'){ swiper.emit('slideNextTransitionEnd'); }else{ swiper.emit('slidePrevTransitionEnd'); }} } var transition$1={ setTransition: setTransition, transitionStart: transitionStart, transitionEnd: transitionEnd$1, }; function slideTo (index, speed, runCallbacks, internal){ if(index===void 0) index=0; if(speed===void 0) speed=this.params.speed; if(runCallbacks===void 0) runCallbacks=true; var swiper=this; var slideIndex=index; if(slideIndex < 0){ slideIndex=0; } var params=swiper.params; var snapGrid=swiper.snapGrid; var slidesGrid=swiper.slidesGrid; var previousIndex=swiper.previousIndex; var activeIndex=swiper.activeIndex; var rtl=swiper.rtlTranslate; if(swiper.animating&¶ms.preventInteractionOnTransition){ return false; } var snapIndex=Math.floor(slideIndex / params.slidesPerGroup); if(snapIndex >=snapGrid.length){ snapIndex=snapGrid.length - 1; } if((activeIndex||params.initialSlide||0)===(previousIndex||0)&&runCallbacks){ swiper.emit('beforeSlideChangeStart'); } var translate=-snapGrid[snapIndex]; swiper.updateProgress(translate); if(params.normalizeSlideIndex){ for (var i=0; i < slidesGrid.length; i +=1){ if(-Math.floor(translate * 100) >=Math.floor(slidesGrid[i] * 100)){ slideIndex=i; }} } if(swiper.initialized&&slideIndex!==activeIndex){ if(!swiper.allowSlideNext&&translate < swiper.translate&&translate < swiper.minTranslate()){ return false; } if(!swiper.allowSlidePrev&&translate > swiper.translate&&translate > swiper.maxTranslate()){ if((activeIndex||0)!==slideIndex){ return false; }} } var direction; if(slideIndex > activeIndex){ direction='next'; } else if(slideIndex < activeIndex){ direction='prev'; }else{ direction='reset'; } if((rtl&&-translate===swiper.translate)||(!rtl&&translate===swiper.translate)){ swiper.updateActiveIndex(slideIndex); if(params.autoHeight){ swiper.updateAutoHeight(); } swiper.updateSlidesClasses(); if(params.effect!=='slide'){ swiper.setTranslate(translate); } if(direction!=='reset'){ swiper.transitionStart(runCallbacks, direction); swiper.transitionEnd(runCallbacks, direction); } return false; } if(speed===0||!Support.transition){ swiper.setTransition(0); swiper.setTranslate(translate); swiper.updateActiveIndex(slideIndex); swiper.updateSlidesClasses(); swiper.emit('beforeTransitionStart', speed, internal); swiper.transitionStart(runCallbacks, direction); swiper.transitionEnd(runCallbacks, direction); }else{ swiper.setTransition(speed); swiper.setTranslate(translate); swiper.updateActiveIndex(slideIndex); swiper.updateSlidesClasses(); swiper.emit('beforeTransitionStart', speed, internal); swiper.transitionStart(runCallbacks, direction); if(!swiper.animating){ swiper.animating=true; if(!swiper.onSlideToWrapperTransitionEnd){ swiper.onSlideToWrapperTransitionEnd=function transitionEnd(e){ if(!swiper||swiper.destroyed){ return; } if(e.target!==this){ return; } swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); swiper.onSlideToWrapperTransitionEnd=null; delete swiper.onSlideToWrapperTransitionEnd; swiper.transitionEnd(runCallbacks, direction); };} swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); }} return true; } function slideToLoop (index, speed, runCallbacks, internal){ if(index===void 0) index=0; if(speed===void 0) speed=this.params.speed; if(runCallbacks===void 0) runCallbacks=true; var swiper=this; var newIndex=index; if(swiper.params.loop){ newIndex +=swiper.loopedSlides; } return swiper.slideTo(newIndex, speed, runCallbacks, internal); } function slideNext (speed, runCallbacks, internal){ if(speed===void 0) speed=this.params.speed; if(runCallbacks===void 0) runCallbacks=true; var swiper=this; var params=swiper.params; var animating=swiper.animating; if(params.loop){ if(animating){ return false; } swiper.loopFix(); swiper._clientLeft=swiper.$wrapperEl[0].clientLeft; return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); } return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); } function slidePrev (speed, runCallbacks, internal){ if(speed===void 0) speed=this.params.speed; if(runCallbacks===void 0) runCallbacks=true; var swiper=this; var params=swiper.params; var animating=swiper.animating; var snapGrid=swiper.snapGrid; var slidesGrid=swiper.slidesGrid; var rtlTranslate=swiper.rtlTranslate; if(params.loop){ if(animating){ return false; } swiper.loopFix(); swiper._clientLeft=swiper.$wrapperEl[0].clientLeft; } var translate=rtlTranslate ? swiper.translate:-swiper.translate; function normalize(val){ if(val < 0){ return -Math.floor(Math.abs(val)); } return Math.floor(val); } var normalizedTranslate=normalize(translate); var normalizedSnapGrid=snapGrid.map(function (val){ return normalize(val); }); var normalizedSlidesGrid=slidesGrid.map(function (val){ return normalize(val); }); var currentSnap=snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; var prevSnap=snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; var prevIndex; if(typeof prevSnap!=='undefined'){ prevIndex=slidesGrid.indexOf(prevSnap); if(prevIndex < 0){ prevIndex=swiper.activeIndex - 1; }} return swiper.slideTo(prevIndex, speed, runCallbacks, internal); } function slideReset (speed, runCallbacks, internal){ if(speed===void 0) speed=this.params.speed; if(runCallbacks===void 0) runCallbacks=true; var swiper=this; return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); } function slideToClosest (speed, runCallbacks, internal){ if(speed===void 0) speed=this.params.speed; if(runCallbacks===void 0) runCallbacks=true; var swiper=this; var index=swiper.activeIndex; var snapIndex=Math.floor(index / swiper.params.slidesPerGroup); if(snapIndex < swiper.snapGrid.length - 1){ var translate=swiper.rtlTranslate ? swiper.translate:-swiper.translate; var currentSnap=swiper.snapGrid[snapIndex]; var nextSnap=swiper.snapGrid[snapIndex + 1]; if((translate - currentSnap) > (nextSnap - currentSnap) / 2){ index=swiper.params.slidesPerGroup; }} return swiper.slideTo(index, speed, runCallbacks, internal); } function slideToClickedSlide (){ var swiper=this; var params=swiper.params; var $wrapperEl=swiper.$wrapperEl; var slidesPerView=params.slidesPerView==='auto' ? swiper.slidesPerViewDynamic():params.slidesPerView; var slideToIndex=swiper.clickedIndex; var realIndex; if(params.loop){ if(swiper.animating){ return; } realIndex=parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); if(params.centeredSlides){ if((slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) ){ swiper.loopFix(); slideToIndex=$wrapperEl .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) .eq(0) .index(); Utils.nextTick(function (){ swiper.slideTo(slideToIndex); }); }else{ swiper.slideTo(slideToIndex); }}else if(slideToIndex > swiper.slides.length - slidesPerView){ swiper.loopFix(); slideToIndex=$wrapperEl .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) .eq(0) .index(); Utils.nextTick(function (){ swiper.slideTo(slideToIndex); }); }else{ swiper.slideTo(slideToIndex); }}else{ swiper.slideTo(slideToIndex); }} var slide={ slideTo: slideTo, slideToLoop: slideToLoop, slideNext: slideNext, slidePrev: slidePrev, slideReset: slideReset, slideToClosest: slideToClosest, slideToClickedSlide: slideToClickedSlide, }; function loopCreate (){ var swiper=this; var params=swiper.params; var $wrapperEl=swiper.$wrapperEl; $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove(); var slides=$wrapperEl.children(("." + (params.slideClass))); if(params.loopFillGroupWithBlank){ var blankSlidesNum=params.slidesPerGroup - (slides.length % params.slidesPerGroup); if(blankSlidesNum!==params.slidesPerGroup){ for (var i=0; i < blankSlidesNum; i +=1){ var blankNode=$(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass))); $wrapperEl.append(blankNode); } slides=$wrapperEl.children(("." + (params.slideClass))); }} if(params.slidesPerView==='auto'&&!params.loopedSlides){ params.loopedSlides=slides.length; } swiper.loopedSlides=parseInt(params.loopedSlides||params.slidesPerView, 10); swiper.loopedSlides +=params.loopAdditionalSlides; if(swiper.loopedSlides > slides.length){ swiper.loopedSlides=slides.length; } var prependSlides=[]; var appendSlides=[]; slides.each(function (index, el){ var slide=$(el); if(index < swiper.loopedSlides){ appendSlides.push(el); } if(index < slides.length&&index >=slides.length - swiper.loopedSlides){ prependSlides.push(el); } slide.attr('data-swiper-slide-index', index); }); for (var i$1=0; i$1 < appendSlides.length; i$1 +=1){ $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass)); } for (var i$2=prependSlides.length - 1; i$2 >=0; i$2 -=1){ $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass)); }} function loopFix (){ var swiper=this; var params=swiper.params; var activeIndex=swiper.activeIndex; var slides=swiper.slides; var loopedSlides=swiper.loopedSlides; var allowSlidePrev=swiper.allowSlidePrev; var allowSlideNext=swiper.allowSlideNext; var snapGrid=swiper.snapGrid; var rtl=swiper.rtlTranslate; var newIndex; swiper.allowSlidePrev=true; swiper.allowSlideNext=true; var snapTranslate=-snapGrid[activeIndex]; var diff=snapTranslate - swiper.getTranslate(); if(activeIndex < loopedSlides){ newIndex=(slides.length - (loopedSlides * 3)) + activeIndex; newIndex +=loopedSlides; var slideChanged=swiper.slideTo(newIndex, 0, false, true); if(slideChanged&&diff!==0){ swiper.setTranslate((rtl ? -swiper.translate:swiper.translate) - diff); }}else if((params.slidesPerView==='auto'&&activeIndex >=loopedSlides * 2)||(activeIndex >=slides.length - loopedSlides)){ newIndex=-slides.length + activeIndex + loopedSlides; newIndex +=loopedSlides; var slideChanged$1=swiper.slideTo(newIndex, 0, false, true); if(slideChanged$1&&diff!==0){ swiper.setTranslate((rtl ? -swiper.translate:swiper.translate) - diff); }} swiper.allowSlidePrev=allowSlidePrev; swiper.allowSlideNext=allowSlideNext; } function loopDestroy (){ var swiper=this; var $wrapperEl=swiper.$wrapperEl; var params=swiper.params; var slides=swiper.slides; $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove(); slides.removeAttr('data-swiper-slide-index'); } var loop={ loopCreate: loopCreate, loopFix: loopFix, loopDestroy: loopDestroy, }; function setGrabCursor (moving){ var swiper=this; if(Support.touch||!swiper.params.simulateTouch||(swiper.params.watchOverflow&&swiper.isLocked)){ return; } var el=swiper.el; el.style.cursor='move'; el.style.cursor=moving ? '-webkit-grabbing':'-webkit-grab'; el.style.cursor=moving ? '-moz-grabbin':'-moz-grab'; el.style.cursor=moving ? 'grabbing':'grab'; } function unsetGrabCursor (){ var swiper=this; if(Support.touch||(swiper.params.watchOverflow&&swiper.isLocked)){ return; } swiper.el.style.cursor=''; } var grabCursor={ setGrabCursor: setGrabCursor, unsetGrabCursor: unsetGrabCursor, }; function appendSlide (slides){ var swiper=this; var $wrapperEl=swiper.$wrapperEl; var params=swiper.params; if(params.loop){ swiper.loopDestroy(); } if(typeof slides==='object'&&'length' in slides){ for (var i=0; i < slides.length; i +=1){ if(slides[i]){ $wrapperEl.append(slides[i]); }} }else{ $wrapperEl.append(slides); } if(params.loop){ swiper.loopCreate(); } if(!(params.observer&&Support.observer)){ swiper.update(); }} function prependSlide (slides){ var swiper=this; var params=swiper.params; var $wrapperEl=swiper.$wrapperEl; var activeIndex=swiper.activeIndex; if(params.loop){ swiper.loopDestroy(); } var newActiveIndex=activeIndex + 1; if(typeof slides==='object'&&'length' in slides){ for (var i=0; i < slides.length; i +=1){ if(slides[i]){ $wrapperEl.prepend(slides[i]); }} newActiveIndex=activeIndex + slides.length; }else{ $wrapperEl.prepend(slides); } if(params.loop){ swiper.loopCreate(); } if(!(params.observer&&Support.observer)){ swiper.update(); } swiper.slideTo(newActiveIndex, 0, false); } function addSlide (index, slides){ var swiper=this; var $wrapperEl=swiper.$wrapperEl; var params=swiper.params; var activeIndex=swiper.activeIndex; var activeIndexBuffer=activeIndex; if(params.loop){ activeIndexBuffer -=swiper.loopedSlides; swiper.loopDestroy(); swiper.slides=$wrapperEl.children(("." + (params.slideClass))); } var baseLength=swiper.slides.length; if(index <=0){ swiper.prependSlide(slides); return; } if(index >=baseLength){ swiper.appendSlide(slides); return; } var newActiveIndex=activeIndexBuffer > index ? activeIndexBuffer + 1:activeIndexBuffer; var slidesBuffer=[]; for (var i=baseLength - 1; i >=index; i -=1){ var currentSlide=swiper.slides.eq(i); currentSlide.remove(); slidesBuffer.unshift(currentSlide); } if(typeof slides==='object'&&'length' in slides){ for (var i$1=0; i$1 < slides.length; i$1 +=1){ if(slides[i$1]){ $wrapperEl.append(slides[i$1]); }} newActiveIndex=activeIndexBuffer > index ? activeIndexBuffer + slides.length:activeIndexBuffer; }else{ $wrapperEl.append(slides); } for (var i$2=0; i$2 < slidesBuffer.length; i$2 +=1){ $wrapperEl.append(slidesBuffer[i$2]); } if(params.loop){ swiper.loopCreate(); } if(!(params.observer&&Support.observer)){ swiper.update(); } if(params.loop){ swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); }else{ swiper.slideTo(newActiveIndex, 0, false); }} function removeSlide (slidesIndexes){ var swiper=this; var params=swiper.params; var $wrapperEl=swiper.$wrapperEl; var activeIndex=swiper.activeIndex; var activeIndexBuffer=activeIndex; if(params.loop){ activeIndexBuffer -=swiper.loopedSlides; swiper.loopDestroy(); swiper.slides=$wrapperEl.children(("." + (params.slideClass))); } var newActiveIndex=activeIndexBuffer; var indexToRemove; if(typeof slidesIndexes==='object'&&'length' in slidesIndexes){ for (var i=0; i < slidesIndexes.length; i +=1){ indexToRemove=slidesIndexes[i]; if(swiper.slides[indexToRemove]){ swiper.slides.eq(indexToRemove).remove(); } if(indexToRemove < newActiveIndex){ newActiveIndex -=1; }} newActiveIndex=Math.max(newActiveIndex, 0); }else{ indexToRemove=slidesIndexes; if(swiper.slides[indexToRemove]){ swiper.slides.eq(indexToRemove).remove(); } if(indexToRemove < newActiveIndex){ newActiveIndex -=1; } newActiveIndex=Math.max(newActiveIndex, 0); } if(params.loop){ swiper.loopCreate(); } if(!(params.observer&&Support.observer)){ swiper.update(); } if(params.loop){ swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); }else{ swiper.slideTo(newActiveIndex, 0, false); }} function removeAllSlides (){ var swiper=this; var slidesIndexes=[]; for (var i=0; i < swiper.slides.length; i +=1){ slidesIndexes.push(i); } swiper.removeSlide(slidesIndexes); } var manipulation={ appendSlide: appendSlide, prependSlide: prependSlide, addSlide: addSlide, removeSlide: removeSlide, removeAllSlides: removeAllSlides, }; var Device=(function Device(){ var ua=win.navigator.userAgent; var device={ ios: false, android: false, androidChrome: false, desktop: false, windows: false, iphone: false, ipod: false, ipad: false, cordova: win.cordova||win.phonegap, phonegap: win.cordova||win.phonegap, }; var windows=ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); var android=ua.match(/(Android);?[\s\/]+([\d.]+)?/); var ipad=ua.match(/(iPad).*OS\s([\d_]+)/); var ipod=ua.match(/(iPod)(.*OS\s([\d_]+))?/); var iphone = !ipad&&ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); if(windows){ device.os='windows'; device.osVersion=windows[2]; device.windows=true; } if(android&&!windows){ device.os='android'; device.osVersion=android[2]; device.android=true; device.androidChrome=ua.toLowerCase().indexOf('chrome') >=0; } if(ipad||iphone||ipod){ device.os='ios'; device.ios=true; } if(iphone&&!ipod){ device.osVersion=iphone[2].replace(/_/g, '.'); device.iphone=true; } if(ipad){ device.osVersion=ipad[2].replace(/_/g, '.'); device.ipad=true; } if(ipod){ device.osVersion=ipod[3] ? ipod[3].replace(/_/g, '.'):null; device.iphone=true; } if(device.ios&&device.osVersion&&ua.indexOf('Version/') >=0){ if(device.osVersion.split('.')[0]==='10'){ device.osVersion=ua.toLowerCase().split('version/')[1].split(' ')[0]; }} device.desktop = !(device.os||device.android||device.webView); device.webView=(iphone||ipad||ipod)&&ua.match(/.*AppleWebKit(?!.*Safari)/i); if(device.os&&device.os==='ios'){ var osVersionArr=device.osVersion.split('.'); var metaViewport=doc.querySelector('meta[name="viewport"]'); device.minimalUi = !device.webView && (ipod||iphone) && (osVersionArr[0] * 1===7 ? osVersionArr[1] * 1 >=1:osVersionArr[0] * 1 > 7) && metaViewport&&metaViewport.getAttribute('content').indexOf('minimal-ui') >=0; } device.pixelRatio=win.devicePixelRatio||1; return device; }()); function onTouchStart (event){ var swiper=this; var data=swiper.touchEventsData; var params=swiper.params; var touches=swiper.touches; if(swiper.animating&¶ms.preventInteractionOnTransition){ return; } var e=event; if(e.originalEvent){ e=e.originalEvent; } data.isTouchEvent=e.type==='touchstart'; if(!data.isTouchEvent&&'which' in e&&e.which===3){ return; } if(!data.isTouchEvent&&'button' in e&&e.button > 0){ return; } if(data.isTouched&&data.isMoved){ return; } if(params.noSwiping&&$(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector:("." + (params.noSwipingClass)))[0]){ swiper.allowClick=true; return; } if(params.swipeHandler){ if(!$(e).closest(params.swipeHandler)[0]){ return; }} touches.currentX=e.type==='touchstart' ? e.targetTouches[0].pageX:e.pageX; touches.currentY=e.type==='touchstart' ? e.targetTouches[0].pageY:e.pageY; var startX=touches.currentX; var startY=touches.currentY; var edgeSwipeDetection=params.edgeSwipeDetection||params.iOSEdgeSwipeDetection; var edgeSwipeThreshold=params.edgeSwipeThreshold||params.iOSEdgeSwipeThreshold; if(edgeSwipeDetection && ((startX <=edgeSwipeThreshold) || (startX >=win.screen.width - edgeSwipeThreshold)) ){ return; } Utils.extend(data, { isTouched: true, isMoved: false, allowTouchCallbacks: true, isScrolling: undefined, startMoving: undefined, }); touches.startX=startX; touches.startY=startY; data.touchStartTime=Utils.now(); swiper.allowClick=true; swiper.updateSize(); swiper.swipeDirection=undefined; if(params.threshold > 0){ data.allowThresholdMove=false; } if(e.type!=='touchstart'){ var preventDefault=true; if($(e.target).is(data.formElements)){ preventDefault=false; } if(doc.activeElement && $(doc.activeElement).is(data.formElements) && doc.activeElement!==e.target ){ doc.activeElement.blur(); } if(preventDefault&&swiper.allowTouchMove&¶ms.touchStartPreventDefault){ e.preventDefault(); }} swiper.emit('touchStart', e); } function onTouchMove (event){ var swiper=this; var data=swiper.touchEventsData; var params=swiper.params; var touches=swiper.touches; var rtl=swiper.rtlTranslate; var e=event; if(e.originalEvent){ e=e.originalEvent; } if(!data.isTouched){ if(data.startMoving&&data.isScrolling){ swiper.emit('touchMoveOpposite', e); } return; } if(data.isTouchEvent&&e.type==='mousemove'){ return; } var pageX=e.type==='touchmove' ? e.targetTouches[0].pageX:e.pageX; var pageY=e.type==='touchmove' ? e.targetTouches[0].pageY:e.pageY; if(e.preventedByNestedSwiper){ touches.startX=pageX; touches.startY=pageY; return; } if(!swiper.allowTouchMove){ swiper.allowClick=false; if(data.isTouched){ Utils.extend(touches, { startX: pageX, startY: pageY, currentX: pageX, currentY: pageY, }); data.touchStartTime=Utils.now(); } return; } if(data.isTouchEvent&¶ms.touchReleaseOnEdges&&!params.loop){ if(swiper.isVertical()){ if((pageY < touches.startY&&swiper.translate <=swiper.maxTranslate()) || (pageY > touches.startY&&swiper.translate >=swiper.minTranslate()) ){ data.isTouched=false; data.isMoved=false; return; }}else if((pageX < touches.startX&&swiper.translate <=swiper.maxTranslate()) || (pageX > touches.startX&&swiper.translate >=swiper.minTranslate()) ){ return; }} if(data.isTouchEvent&&doc.activeElement){ if(e.target===doc.activeElement&&$(e.target).is(data.formElements)){ data.isMoved=true; swiper.allowClick=false; return; }} if(data.allowTouchCallbacks){ swiper.emit('touchMove', e); } if(e.targetTouches&&e.targetTouches.length > 1){ return; } touches.currentX=pageX; touches.currentY=pageY; var diffX=touches.currentX - touches.startX; var diffY=touches.currentY - touches.startY; if(swiper.params.threshold&&Math.sqrt((Math.pow(diffX, 2)) + (Math.pow(diffY, 2))) < swiper.params.threshold){ return; } if(typeof data.isScrolling==='undefined'){ var touchAngle; if((swiper.isHorizontal()&&touches.currentY===touches.startY)||(swiper.isVertical()&&touches.currentX===touches.startX)){ data.isScrolling=false; }else{ if((diffX * diffX) + (diffY * diffY) >=25){ touchAngle=(Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; data.isScrolling=swiper.isHorizontal() ? touchAngle > params.touchAngle:(90 - touchAngle > params.touchAngle); }} } if(data.isScrolling){ swiper.emit('touchMoveOpposite', e); } if(typeof data.startMoving==='undefined'){ if(touches.currentX!==touches.startX||touches.currentY!==touches.startY){ data.startMoving=true; }} if(data.isScrolling){ data.isTouched=false; return; } if(!data.startMoving){ return; } swiper.allowClick=false; e.preventDefault(); if(params.touchMoveStopPropagation&&!params.nested){ e.stopPropagation(); } if(!data.isMoved){ if(params.loop){ swiper.loopFix(); } data.startTranslate=swiper.getTranslate(); swiper.setTransition(0); if(swiper.animating){ swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); } data.allowMomentumBounce=false; if(params.grabCursor&&(swiper.allowSlideNext===true||swiper.allowSlidePrev===true)){ swiper.setGrabCursor(true); } swiper.emit('sliderFirstMove', e); } swiper.emit('sliderMove', e); data.isMoved=true; var diff=swiper.isHorizontal() ? diffX:diffY; touches.diff=diff; diff *=params.touchRatio; if(rtl){ diff=-diff; } swiper.swipeDirection=diff > 0 ? 'prev':'next'; data.currentTranslate=diff + data.startTranslate; var disableParentSwiper=true; var resistanceRatio=params.resistanceRatio; if(params.touchReleaseOnEdges){ resistanceRatio=0; } if((diff > 0&&data.currentTranslate > swiper.minTranslate())){ disableParentSwiper=false; if(params.resistance){ data.currentTranslate=(swiper.minTranslate() - 1) + (Math.pow((-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio)); }}else if(diff < 0&&data.currentTranslate < swiper.maxTranslate()){ disableParentSwiper=false; if(params.resistance){ data.currentTranslate=(swiper.maxTranslate() + 1) - (Math.pow((swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio)); }} if(disableParentSwiper){ e.preventedByNestedSwiper=true; } if(!swiper.allowSlideNext&&swiper.swipeDirection==='next'&&data.currentTranslate < data.startTranslate){ data.currentTranslate=data.startTranslate; } if(!swiper.allowSlidePrev&&swiper.swipeDirection==='prev'&&data.currentTranslate > data.startTranslate){ data.currentTranslate=data.startTranslate; } if(params.threshold > 0){ if(Math.abs(diff) > params.threshold||data.allowThresholdMove){ if(!data.allowThresholdMove){ data.allowThresholdMove=true; touches.startX=touches.currentX; touches.startY=touches.currentY; data.currentTranslate=data.startTranslate; touches.diff=swiper.isHorizontal() ? touches.currentX - touches.startX:touches.currentY - touches.startY; return; }}else{ data.currentTranslate=data.startTranslate; return; }} if(!params.followFinger){ return; } if(params.freeMode||params.watchSlidesProgress||params.watchSlidesVisibility){ swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } if(params.freeMode){ if(data.velocities.length===0){ data.velocities.push({ position: touches[swiper.isHorizontal() ? 'startX':'startY'], time: data.touchStartTime, }); } data.velocities.push({ position: touches[swiper.isHorizontal() ? 'currentX':'currentY'], time: Utils.now(), }); } swiper.updateProgress(data.currentTranslate); swiper.setTranslate(data.currentTranslate); } function onTouchEnd (event){ var swiper=this; var data=swiper.touchEventsData; var params=swiper.params; var touches=swiper.touches; var rtl=swiper.rtlTranslate; var $wrapperEl=swiper.$wrapperEl; var slidesGrid=swiper.slidesGrid; var snapGrid=swiper.snapGrid; var e=event; if(e.originalEvent){ e=e.originalEvent; } if(data.allowTouchCallbacks){ swiper.emit('touchEnd', e); } data.allowTouchCallbacks=false; if(!data.isTouched){ if(data.isMoved&¶ms.grabCursor){ swiper.setGrabCursor(false); } data.isMoved=false; data.startMoving=false; return; } if(params.grabCursor&&data.isMoved&&data.isTouched&&(swiper.allowSlideNext===true||swiper.allowSlidePrev===true)){ swiper.setGrabCursor(false); } var touchEndTime=Utils.now(); var timeDiff=touchEndTime - data.touchStartTime; if(swiper.allowClick){ swiper.updateClickedSlide(e); swiper.emit('tap', e); if(timeDiff < 300&&(touchEndTime - data.lastClickTime) > 300){ if(data.clickTimeout){ clearTimeout(data.clickTimeout); } data.clickTimeout=Utils.nextTick(function (){ if(!swiper||swiper.destroyed){ return; } swiper.emit('click', e); }, 300); } if(timeDiff < 300&&(touchEndTime - data.lastClickTime) < 300){ if(data.clickTimeout){ clearTimeout(data.clickTimeout); } swiper.emit('doubleTap', e); }} data.lastClickTime=Utils.now(); Utils.nextTick(function (){ if(!swiper.destroyed){ swiper.allowClick=true; }}); if(!data.isTouched||!data.isMoved||!swiper.swipeDirection||touches.diff===0||data.currentTranslate===data.startTranslate){ data.isTouched=false; data.isMoved=false; data.startMoving=false; return; } data.isTouched=false; data.isMoved=false; data.startMoving=false; var currentPos; if(params.followFinger){ currentPos=rtl ? swiper.translate:-swiper.translate; }else{ currentPos=-data.currentTranslate; } if(params.freeMode){ if(currentPos < -swiper.minTranslate()){ swiper.slideTo(swiper.activeIndex); return; } if(currentPos > -swiper.maxTranslate()){ if(swiper.slides.length < snapGrid.length){ swiper.slideTo(snapGrid.length - 1); }else{ swiper.slideTo(swiper.slides.length - 1); } return; } if(params.freeModeMomentum){ if(data.velocities.length > 1){ var lastMoveEvent=data.velocities.pop(); var velocityEvent=data.velocities.pop(); var distance=lastMoveEvent.position - velocityEvent.position; var time=lastMoveEvent.time - velocityEvent.time; swiper.velocity=distance / time; swiper.velocity /=2; if(Math.abs(swiper.velocity) < params.freeModeMinimumVelocity){ swiper.velocity=0; } if(time > 150||(Utils.now() - lastMoveEvent.time) > 300){ swiper.velocity=0; }}else{ swiper.velocity=0; } swiper.velocity *=params.freeModeMomentumVelocityRatio; data.velocities.length=0; var momentumDuration=1000 * params.freeModeMomentumRatio; var momentumDistance=swiper.velocity * momentumDuration; var newPosition=swiper.translate + momentumDistance; if(rtl){ newPosition=-newPosition; } var doBounce=false; var afterBouncePosition; var bounceAmount=Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; var needsLoopFix; if(newPosition < swiper.maxTranslate()){ if(params.freeModeMomentumBounce){ if(newPosition + swiper.maxTranslate() < -bounceAmount){ newPosition=swiper.maxTranslate() - bounceAmount; } afterBouncePosition=swiper.maxTranslate(); doBounce=true; data.allowMomentumBounce=true; }else{ newPosition=swiper.maxTranslate(); } if(params.loop&¶ms.centeredSlides){ needsLoopFix=true; }}else if(newPosition > swiper.minTranslate()){ if(params.freeModeMomentumBounce){ if(newPosition - swiper.minTranslate() > bounceAmount){ newPosition=swiper.minTranslate() + bounceAmount; } afterBouncePosition=swiper.minTranslate(); doBounce=true; data.allowMomentumBounce=true; }else{ newPosition=swiper.minTranslate(); } if(params.loop&¶ms.centeredSlides){ needsLoopFix=true; }}else if(params.freeModeSticky){ var nextSlide; for (var j=0; j < snapGrid.length; j +=1){ if(snapGrid[j] > -newPosition){ nextSlide=j; break; }} if(Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition)||swiper.swipeDirection==='next'){ newPosition=snapGrid[nextSlide]; }else{ newPosition=snapGrid[nextSlide - 1]; } newPosition=-newPosition; } if(needsLoopFix){ swiper.once('transitionEnd', function (){ swiper.loopFix(); }); } if(swiper.velocity!==0){ if(rtl){ momentumDuration=Math.abs((-newPosition - swiper.translate) / swiper.velocity); }else{ momentumDuration=Math.abs((newPosition - swiper.translate) / swiper.velocity); }}else if(params.freeModeSticky){ swiper.slideToClosest(); return; } if(params.freeModeMomentumBounce&&doBounce){ swiper.updateProgress(afterBouncePosition); swiper.setTransition(momentumDuration); swiper.setTranslate(newPosition); swiper.transitionStart(true, swiper.swipeDirection); swiper.animating=true; $wrapperEl.transitionEnd(function (){ if(!swiper||swiper.destroyed||!data.allowMomentumBounce){ return; } swiper.emit('momentumBounce'); swiper.setTransition(params.speed); swiper.setTranslate(afterBouncePosition); $wrapperEl.transitionEnd(function (){ if(!swiper||swiper.destroyed){ return; } swiper.transitionEnd(); }); }); }else if(swiper.velocity){ swiper.updateProgress(newPosition); swiper.setTransition(momentumDuration); swiper.setTranslate(newPosition); swiper.transitionStart(true, swiper.swipeDirection); if(!swiper.animating){ swiper.animating=true; $wrapperEl.transitionEnd(function (){ if(!swiper||swiper.destroyed){ return; } swiper.transitionEnd(); }); }}else{ swiper.updateProgress(newPosition); } swiper.updateActiveIndex(); swiper.updateSlidesClasses(); }else if(params.freeModeSticky){ swiper.slideToClosest(); return; } if(!params.freeModeMomentum||timeDiff >=params.longSwipesMs){ swiper.updateProgress(); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } return; } var stopIndex=0; var groupSize=swiper.slidesSizesGrid[0]; for (var i=0; i < slidesGrid.length; i +=params.slidesPerGroup){ if(typeof slidesGrid[i + params.slidesPerGroup]!=='undefined'){ if(currentPos >=slidesGrid[i]&¤tPos < slidesGrid[i + params.slidesPerGroup]){ stopIndex=i; groupSize=slidesGrid[i + params.slidesPerGroup] - slidesGrid[i]; }}else if(currentPos >=slidesGrid[i]){ stopIndex=i; groupSize=slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; }} var ratio=(currentPos - slidesGrid[stopIndex]) / groupSize; if(timeDiff > params.longSwipesMs){ if(!params.longSwipes){ swiper.slideTo(swiper.activeIndex); return; } if(swiper.swipeDirection==='next'){ if(ratio >=params.longSwipesRatio){ swiper.slideTo(stopIndex + params.slidesPerGroup); }else{ swiper.slideTo(stopIndex); }} if(swiper.swipeDirection==='prev'){ if(ratio > (1 - params.longSwipesRatio)){ swiper.slideTo(stopIndex + params.slidesPerGroup); }else{ swiper.slideTo(stopIndex); }} }else{ if(!params.shortSwipes){ swiper.slideTo(swiper.activeIndex); return; } if(swiper.swipeDirection==='next'){ swiper.slideTo(stopIndex + params.slidesPerGroup); } if(swiper.swipeDirection==='prev'){ swiper.slideTo(stopIndex); }} } function onResize (){ var swiper=this; var params=swiper.params; var el=swiper.el; if(el&&el.offsetWidth===0){ return; } if(params.breakpoints){ swiper.setBreakpoint(); } var allowSlideNext=swiper.allowSlideNext; var allowSlidePrev=swiper.allowSlidePrev; var snapGrid=swiper.snapGrid; swiper.allowSlideNext=true; swiper.allowSlidePrev=true; swiper.updateSize(); swiper.updateSlides(); if(params.freeMode){ var newTranslate=Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate()); swiper.setTranslate(newTranslate); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); if(params.autoHeight){ swiper.updateAutoHeight(); }}else{ swiper.updateSlidesClasses(); if((params.slidesPerView==='auto'||params.slidesPerView > 1)&&swiper.isEnd&&!swiper.params.centeredSlides){ swiper.slideTo(swiper.slides.length - 1, 0, false, true); }else{ swiper.slideTo(swiper.activeIndex, 0, false, true); }} swiper.allowSlidePrev=allowSlidePrev; swiper.allowSlideNext=allowSlideNext; if(swiper.params.watchOverflow&&snapGrid!==swiper.snapGrid){ swiper.checkOverflow(); }} function onClick (e){ var swiper=this; if(!swiper.allowClick){ if(swiper.params.preventClicks){ e.preventDefault(); } if(swiper.params.preventClicksPropagation&&swiper.animating){ e.stopPropagation(); e.stopImmediatePropagation(); }} } function attachEvents(){ var swiper=this; var params=swiper.params; var touchEvents=swiper.touchEvents; var el=swiper.el; var wrapperEl=swiper.wrapperEl; { swiper.onTouchStart=onTouchStart.bind(swiper); swiper.onTouchMove=onTouchMove.bind(swiper); swiper.onTouchEnd=onTouchEnd.bind(swiper); } swiper.onClick=onClick.bind(swiper); var target=params.touchEventsTarget==='container' ? el:wrapperEl; var capture = !!params.nested; { if(!Support.touch&&(Support.pointerEvents||Support.prefixedPointerEvents)){ target.addEventListener(touchEvents.start, swiper.onTouchStart, false); doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture); doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false); }else{ if(Support.touch){ var passiveListener=touchEvents.start==='touchstart'&&Support.passiveListener&¶ms.passiveListeners ? { passive: true, capture: false }:false; target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture }:capture); target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); } if((params.simulateTouch&&!Device.ios&&!Device.android)||(params.simulateTouch&&!Support.touch&&Device.ios)){ target.addEventListener('mousedown', swiper.onTouchStart, false); doc.addEventListener('mousemove', swiper.onTouchMove, capture); doc.addEventListener('mouseup', swiper.onTouchEnd, false); }} if(params.preventClicks||params.preventClicksPropagation){ target.addEventListener('click', swiper.onClick, true); }} swiper.on((Device.ios||Device.android ? 'resize orientationchange observerUpdate':'resize observerUpdate'), onResize, true); } function detachEvents(){ var swiper=this; var params=swiper.params; var touchEvents=swiper.touchEvents; var el=swiper.el; var wrapperEl=swiper.wrapperEl; var target=params.touchEventsTarget==='container' ? el:wrapperEl; var capture = !!params.nested; { if(!Support.touch&&(Support.pointerEvents||Support.prefixedPointerEvents)){ target.removeEventListener(touchEvents.start, swiper.onTouchStart, false); doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); }else{ if(Support.touch){ var passiveListener=touchEvents.start==='onTouchStart'&&Support.passiveListener&¶ms.passiveListeners ? { passive: true, capture: false }:false; target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); } if((params.simulateTouch&&!Device.ios&&!Device.android)||(params.simulateTouch&&!Support.touch&&Device.ios)){ target.removeEventListener('mousedown', swiper.onTouchStart, false); doc.removeEventListener('mousemove', swiper.onTouchMove, capture); doc.removeEventListener('mouseup', swiper.onTouchEnd, false); }} if(params.preventClicks||params.preventClicksPropagation){ target.removeEventListener('click', swiper.onClick, true); }} swiper.off((Device.ios||Device.android ? 'resize orientationchange observerUpdate':'resize observerUpdate'), onResize); } var events={ attachEvents: attachEvents, detachEvents: detachEvents, }; function setBreakpoint (){ var swiper=this; var activeIndex=swiper.activeIndex; var initialized=swiper.initialized; var loopedSlides=swiper.loopedSlides; if(loopedSlides===void 0) loopedSlides=0; var params=swiper.params; var breakpoints=params.breakpoints; if(!breakpoints||(breakpoints&&Object.keys(breakpoints).length===0)){ return; } var breakpoint=swiper.getBreakpoint(breakpoints); if(breakpoint&&swiper.currentBreakpoint!==breakpoint){ var breakPointsParams=breakpoint in breakpoints ? breakpoints[breakpoint]:swiper.originalParams; var needsReLoop=params.loop&&(breakPointsParams.slidesPerView!==params.slidesPerView); Utils.extend(swiper.params, breakPointsParams); Utils.extend(swiper, { allowTouchMove: swiper.params.allowTouchMove, allowSlideNext: swiper.params.allowSlideNext, allowSlidePrev: swiper.params.allowSlidePrev, }); swiper.currentBreakpoint=breakpoint; if(needsReLoop&&initialized){ swiper.loopDestroy(); swiper.loopCreate(); swiper.updateSlides(); swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); } swiper.emit('breakpoint', breakPointsParams); }} function getBreakpoint (breakpoints){ var swiper=this; if(!breakpoints){ return undefined; } var breakpoint=false; var points=[]; Object.keys(breakpoints).forEach(function (point){ points.push(point); }); points.sort(function (a, b){ return parseInt(a, 10) - parseInt(b, 10); }); for (var i=0; i < points.length; i +=1){ var point=points[i]; if(swiper.params.breakpointsInverse){ if(point <=win.innerWidth){ breakpoint=point; }}else if(point >=win.innerWidth&&!breakpoint){ breakpoint=point; }} return breakpoint||'max'; } var breakpoints={ setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint }; var Browser=(function Browser(){ function isSafari(){ var ua=win.navigator.userAgent.toLowerCase(); return (ua.indexOf('safari') >=0&&ua.indexOf('chrome') < 0&&ua.indexOf('android') < 0); } return { isIE: !!win.navigator.userAgent.match(/Trident/g)||!!win.navigator.userAgent.match(/MSIE/g), isEdge: !!win.navigator.userAgent.match(/Edge/g), isSafari: isSafari(), isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent), };}()); function addClasses (){ var swiper=this; var classNames=swiper.classNames; var params=swiper.params; var rtl=swiper.rtl; var $el=swiper.$el; var suffixes=[]; suffixes.push(params.direction); if(params.freeMode){ suffixes.push('free-mode'); } if(!Support.flexbox){ suffixes.push('no-flexbox'); } if(params.autoHeight){ suffixes.push('autoheight'); } if(rtl){ suffixes.push('rtl'); } if(params.slidesPerColumn > 1){ suffixes.push('multirow'); } if(Device.android){ suffixes.push('android'); } if(Device.ios){ suffixes.push('ios'); } if((Browser.isIE||Browser.isEdge)&&(Support.pointerEvents||Support.prefixedPointerEvents)){ suffixes.push(("wp8-" + (params.direction))); } suffixes.forEach(function (suffix){ classNames.push(params.containerModifierClass + suffix); }); $el.addClass(classNames.join(' ')); } function removeClasses (){ var swiper=this; var $el=swiper.$el; var classNames=swiper.classNames; $el.removeClass(classNames.join(' ')); } var classes={ addClasses: addClasses, removeClasses: removeClasses }; function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback){ var image; function onReady(){ if(callback){ callback(); }} if(!imageEl.complete||!checkForComplete){ if(src){ image=new win.Image(); image.onload=onReady; image.onerror=onReady; if(sizes){ image.sizes=sizes; } if(srcset){ image.srcset=srcset; } if(src){ image.src=src; }}else{ onReady(); }}else{ onReady(); }} function preloadImages (){ var swiper=this; swiper.imagesToLoad=swiper.$el.find('img'); function onReady(){ if(typeof swiper==='undefined'||swiper===null||!swiper||swiper.destroyed){ return; } if(swiper.imagesLoaded!==undefined){ swiper.imagesLoaded +=1; } if(swiper.imagesLoaded===swiper.imagesToLoad.length){ if(swiper.params.updateOnImagesReady){ swiper.update(); } swiper.emit('imagesReady'); }} for (var i=0; i < swiper.imagesToLoad.length; i +=1){ var imageEl=swiper.imagesToLoad[i]; swiper.loadImage(imageEl, imageEl.currentSrc||imageEl.getAttribute('src'), imageEl.srcset||imageEl.getAttribute('srcset'), imageEl.sizes||imageEl.getAttribute('sizes'), true, onReady ); }} var images={ loadImage: loadImage, preloadImages: preloadImages, }; function checkOverflow(){ var swiper=this; var wasLocked=swiper.isLocked; swiper.isLocked=swiper.snapGrid.length===1; swiper.allowSlideNext = !swiper.isLocked; swiper.allowSlidePrev = !swiper.isLocked; if(wasLocked!==swiper.isLocked){ swiper.emit(swiper.isLocked ? 'lock':'unlock'); } if(wasLocked&&wasLocked!==swiper.isLocked){ swiper.isEnd=false; swiper.navigation.update(); }} var checkOverflow$1={ checkOverflow: checkOverflow }; var defaults={ init: true, direction: 'horizontal', touchEventsTarget: 'container', initialSlide: 0, speed: 300, preventInteractionOnTransition: false, edgeSwipeDetection: false, edgeSwipeThreshold: 20, freeMode: false, freeModeMomentum: true, freeModeMomentumRatio: 1, freeModeMomentumBounce: true, freeModeMomentumBounceRatio: 1, freeModeMomentumVelocityRatio: 1, freeModeSticky: false, freeModeMinimumVelocity: 0.02, autoHeight: false, setWrapperSize: false, virtualTranslate: false, effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' breakpoints: undefined, breakpointsInverse: false, spaceBetween: 0, slidesPerView: 1, slidesPerColumn: 1, slidesPerColumnFill: 'column', slidesPerGroup: 1, centeredSlides: false, slidesOffsetBefore: 0, slidesOffsetAfter: 0, normalizeSlideIndex: true, centerInsufficientSlides: false, watchOverflow: false, roundLengths: false, touchRatio: 1, touchAngle: 45, simulateTouch: true, shortSwipes: true, longSwipes: true, longSwipesRatio: 0.5, longSwipesMs: 300, followFinger: true, allowTouchMove: true, threshold: 0, touchMoveStopPropagation: true, touchStartPreventDefault: true, touchReleaseOnEdges: false, uniqueNavElements: true, resistance: true, resistanceRatio: 0.85, watchSlidesProgress: false, watchSlidesVisibility: false, grabCursor: false, preventClicks: true, preventClicksPropagation: true, slideToClickedSlide: false, preloadImages: true, updateOnImagesReady: true, loop: false, loopAdditionalSlides: 0, loopedSlides: null, loopFillGroupWithBlank: false, allowSlidePrev: true, allowSlideNext: true, swipeHandler: null, // '.swipe-handler', noSwiping: true, noSwipingClass: 'swiper-no-swiping', noSwipingSelector: null, passiveListeners: true, containerModifierClass: 'swiper-container-', slideClass: 'swiper-slide', slideBlankClass: 'swiper-slide-invisible-blank', slideActiveClass: 'swiper-slide-active', slideDuplicateActiveClass: 'swiper-slide-duplicate-active', slideVisibleClass: 'swiper-slide-visible', slideDuplicateClass: 'swiper-slide-duplicate', slideNextClass: 'swiper-slide-next', slideDuplicateNextClass: 'swiper-slide-duplicate-next', slidePrevClass: 'swiper-slide-prev', slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', wrapperClass: 'swiper-wrapper', runCallbacksOnInit: true, }; var prototypes={ update: update, translate: translate, transition: transition$1, slide: slide, loop: loop, grabCursor: grabCursor, manipulation: manipulation, events: events, breakpoints: breakpoints, checkOverflow: checkOverflow$1, classes: classes, images: images, }; var extendedDefaults={}; var Swiper=(function (SwiperClass$$1){ function Swiper(){ var assign; var args=[], len=arguments.length; while(len--) args[ len ]=arguments[ len ]; var el; var params; if(args.length===1&&args[0].constructor&&args[0].constructor===Object){ params=args[0]; }else{ (assign=args, el=assign[0], params=assign[1]); } if(!params){ params={};} params=Utils.extend({}, params); if(el&&!params.el){ params.el=el; } SwiperClass$$1.call(this, params); Object.keys(prototypes).forEach(function (prototypeGroup){ Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod){ if(!Swiper.prototype[protoMethod]){ Swiper.prototype[protoMethod]=prototypes[prototypeGroup][protoMethod]; }}); }); var swiper=this; if(typeof swiper.modules==='undefined'){ swiper.modules={};} Object.keys(swiper.modules).forEach(function (moduleName){ var module=swiper.modules[moduleName]; if(module.params){ var moduleParamName=Object.keys(module.params)[0]; var moduleParams=module.params[moduleParamName]; if(typeof moduleParams!=='object'||moduleParams===null){ return; } if(!(moduleParamName in params&&'enabled' in moduleParams)){ return; } if(params[moduleParamName]===true){ params[moduleParamName]={ enabled: true };} if(typeof params[moduleParamName]==='object' && !('enabled' in params[moduleParamName]) ){ params[moduleParamName].enabled=true; } if(!params[moduleParamName]){ params[moduleParamName]={ enabled: false };}} }); var swiperParams=Utils.extend({}, defaults); swiper.useModulesParams(swiperParams); swiper.params=Utils.extend({}, swiperParams, extendedDefaults, params); swiper.originalParams=Utils.extend({}, swiper.params); swiper.passedParams=Utils.extend({}, params); swiper.$=$; var $el=$(swiper.params.el); el=$el[0]; if(!el){ return undefined; } if($el.length > 1){ var swipers=[]; $el.each(function (index, containerEl){ var newParams=Utils.extend({}, params, { el: containerEl }); swipers.push(new Swiper(newParams)); }); return swipers; } el.swiper=swiper; $el.data('swiper', swiper); var $wrapperEl=$el.children(("." + (swiper.params.wrapperClass))); Utils.extend(swiper, { $el: $el, el: el, $wrapperEl: $wrapperEl, wrapperEl: $wrapperEl[0], classNames: [], slides: $(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal: function isHorizontal(){ return swiper.params.direction==='horizontal'; }, isVertical: function isVertical(){ return swiper.params.direction==='vertical'; }, rtl: (el.dir.toLowerCase()==='rtl'||$el.css('direction')==='rtl'), rtlTranslate: swiper.params.direction==='horizontal'&&(el.dir.toLowerCase()==='rtl'||$el.css('direction')==='rtl'), wrongRTL: $wrapperEl.css('display')==='-webkit-box', activeIndex: 0, realIndex: 0, isBeginning: true, isEnd: false, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: false, allowSlideNext: swiper.params.allowSlideNext, allowSlidePrev: swiper.params.allowSlidePrev, touchEvents: (function touchEvents(){ var touch=['touchstart', 'touchmove', 'touchend']; var desktop=['mousedown', 'mousemove', 'mouseup']; if(Support.pointerEvents){ desktop=['pointerdown', 'pointermove', 'pointerup']; }else if(Support.prefixedPointerEvents){ desktop=['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; } swiper.touchEventsTouch={ start: touch[0], move: touch[1], end: touch[2], }; swiper.touchEventsDesktop={ start: desktop[0], move: desktop[1], end: desktop[2], }; return Support.touch||!swiper.params.simulateTouch ? swiper.touchEventsTouch:swiper.touchEventsDesktop; }()), touchEventsData: { isTouched: undefined, isMoved: undefined, allowTouchCallbacks: undefined, touchStartTime: undefined, isScrolling: undefined, currentTranslate: undefined, startTranslate: undefined, allowThresholdMove: undefined, formElements: 'input, select, option, textarea, button, video', lastClickTime: Utils.now(), clickTimeout: undefined, velocities: [], allowMomentumBounce: undefined, isTouchEvent: undefined, startMoving: undefined, }, allowClick: true, allowTouchMove: swiper.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0, }, imagesToLoad: [], imagesLoaded: 0, }); swiper.useModules(); if(swiper.params.init){ swiper.init(); } return swiper; } if(SwiperClass$$1) Swiper.__proto__=SwiperClass$$1; Swiper.prototype=Object.create(SwiperClass$$1&&SwiperClass$$1.prototype); Swiper.prototype.constructor=Swiper; var staticAccessors={ extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true }}; Swiper.prototype.slidesPerViewDynamic=function slidesPerViewDynamic (){ var swiper=this; var params=swiper.params; var slides=swiper.slides; var slidesGrid=swiper.slidesGrid; var swiperSize=swiper.size; var activeIndex=swiper.activeIndex; var spv=1; if(params.centeredSlides){ var slideSize=slides[activeIndex].swiperSlideSize; var breakLoop; for (var i=activeIndex + 1; i < slides.length; i +=1){ if(slides[i]&&!breakLoop){ slideSize +=slides[i].swiperSlideSize; spv +=1; if(slideSize > swiperSize){ breakLoop=true; }} } for (var i$1=activeIndex - 1; i$1 >=0; i$1 -=1){ if(slides[i$1]&&!breakLoop){ slideSize +=slides[i$1].swiperSlideSize; spv +=1; if(slideSize > swiperSize){ breakLoop=true; }} }}else{ for (var i$2=activeIndex + 1; i$2 < slides.length; i$2 +=1){ if(slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize){ spv +=1; }} } return spv; }; Swiper.prototype.update=function update$$1 (){ var swiper=this; if(!swiper||swiper.destroyed){ return; } var snapGrid=swiper.snapGrid; var params=swiper.params; if(params.breakpoints){ swiper.setBreakpoint(); } swiper.updateSize(); swiper.updateSlides(); swiper.updateProgress(); swiper.updateSlidesClasses(); function setTranslate(){ var translateValue=swiper.rtlTranslate ? swiper.translate * -1:swiper.translate; var newTranslate=Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); swiper.setTranslate(newTranslate); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } var translated; if(swiper.params.freeMode){ setTranslate(); if(swiper.params.autoHeight){ swiper.updateAutoHeight(); }}else{ if((swiper.params.slidesPerView==='auto'||swiper.params.slidesPerView > 1)&&swiper.isEnd&&!swiper.params.centeredSlides){ translated=swiper.slideTo(swiper.slides.length - 1, 0, false, true); }else{ translated=swiper.slideTo(swiper.activeIndex, 0, false, true); } if(!translated){ setTranslate(); }} if(params.watchOverflow&&snapGrid!==swiper.snapGrid){ swiper.checkOverflow(); } swiper.emit('update'); }; Swiper.prototype.init=function init (){ var swiper=this; if(swiper.initialized){ return; } swiper.emit('beforeInit'); if(swiper.params.breakpoints){ swiper.setBreakpoint(); } swiper.addClasses(); if(swiper.params.loop){ swiper.loopCreate(); } swiper.updateSize(); swiper.updateSlides(); if(swiper.params.watchOverflow){ swiper.checkOverflow(); } if(swiper.params.grabCursor){ swiper.setGrabCursor(); } if(swiper.params.preloadImages){ swiper.preloadImages(); } if(swiper.params.loop){ swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); }else{ swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); } swiper.attachEvents(); swiper.initialized=true; swiper.emit('init'); }; Swiper.prototype.destroy=function destroy (deleteInstance, cleanStyles){ if(deleteInstance===void 0) deleteInstance=true; if(cleanStyles===void 0) cleanStyles=true; var swiper=this; var params=swiper.params; var $el=swiper.$el; var $wrapperEl=swiper.$wrapperEl; var slides=swiper.slides; if(typeof swiper.params==='undefined'||swiper.destroyed){ return null; } swiper.emit('beforeDestroy'); swiper.initialized=false; swiper.detachEvents(); if(params.loop){ swiper.loopDestroy(); } if(cleanStyles){ swiper.removeClasses(); $el.removeAttr('style'); $wrapperEl.removeAttr('style'); if(slides&&slides.length){ slides .removeClass([ params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass ].join(' ')) .removeAttr('style') .removeAttr('data-swiper-slide-index') .removeAttr('data-swiper-column') .removeAttr('data-swiper-row'); }} swiper.emit('destroy'); Object.keys(swiper.eventsListeners).forEach(function (eventName){ swiper.off(eventName); }); if(deleteInstance!==false){ swiper.$el[0].swiper=null; swiper.$el.data('swiper', null); Utils.deleteProps(swiper); } swiper.destroyed=true; return null; }; Swiper.extendDefaults=function extendDefaults (newDefaults){ Utils.extend(extendedDefaults, newDefaults); }; staticAccessors.extendedDefaults.get=function (){ return extendedDefaults; }; staticAccessors.defaults.get=function (){ return defaults; }; staticAccessors.Class.get=function (){ return SwiperClass$$1; }; staticAccessors.$.get=function (){ return $; }; Object.defineProperties(Swiper, staticAccessors); return Swiper; }(SwiperClass)); var Device$1={ name: 'device', proto: { device: Device, }, static: { device: Device, }, }; var Support$1={ name: 'support', proto: { support: Support, }, static: { support: Support, }, }; var Browser$1={ name: 'browser', proto: { browser: Browser, }, static: { browser: Browser, }, }; var Resize={ name: 'resize', create: function create(){ var swiper=this; Utils.extend(swiper, { resize: { resizeHandler: function resizeHandler(){ if(!swiper||swiper.destroyed||!swiper.initialized){ return; } swiper.emit('beforeResize'); swiper.emit('resize'); }, orientationChangeHandler: function orientationChangeHandler(){ if(!swiper||swiper.destroyed||!swiper.initialized){ return; } swiper.emit('orientationchange'); }, }, }); }, on: { init: function init(){ var swiper=this; win.addEventListener('resize', swiper.resize.resizeHandler); win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); }, destroy: function destroy(){ var swiper=this; win.removeEventListener('resize', swiper.resize.resizeHandler); win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); }, }, }; var Observer={ func: win.MutationObserver||win.WebkitMutationObserver, attach: function attach(target, options){ if(options===void 0) options={}; var swiper=this; var ObserverFunc=Observer.func; var observer=new ObserverFunc(function (mutations){ if(mutations.length===1){ swiper.emit('observerUpdate', mutations[0]); return; } var observerUpdate=function observerUpdate(){ swiper.emit('observerUpdate', mutations[0]); }; if(win.requestAnimationFrame){ win.requestAnimationFrame(observerUpdate); }else{ win.setTimeout(observerUpdate, 0); }}); observer.observe(target, { attributes: typeof options.attributes==='undefined' ? true:options.attributes, childList: typeof options.childList==='undefined' ? true:options.childList, characterData: typeof options.characterData==='undefined' ? true:options.characterData, }); swiper.observer.observers.push(observer); }, init: function init(){ var swiper=this; if(!Support.observer||!swiper.params.observer){ return; } if(swiper.params.observeParents){ var containerParents=swiper.$el.parents(); for (var i=0; i < containerParents.length; i +=1){ swiper.observer.attach(containerParents[i]); }} swiper.observer.attach(swiper.$el[0], { childList: false }); swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); }, destroy: function destroy(){ var swiper=this; swiper.observer.observers.forEach(function (observer){ observer.disconnect(); }); swiper.observer.observers=[]; }, }; var Observer$1={ name: 'observer', params: { observer: false, observeParents: false, }, create: function create(){ var swiper=this; Utils.extend(swiper, { observer: { init: Observer.init.bind(swiper), attach: Observer.attach.bind(swiper), destroy: Observer.destroy.bind(swiper), observers: [], }, }); }, on: { init: function init(){ var swiper=this; swiper.observer.init(); }, destroy: function destroy(){ var swiper=this; swiper.observer.destroy(); }, }, }; var Virtual={ update: function update(force){ var swiper=this; var ref=swiper.params; var slidesPerView=ref.slidesPerView; var slidesPerGroup=ref.slidesPerGroup; var centeredSlides=ref.centeredSlides; var ref$1=swiper.params.virtual; var addSlidesBefore=ref$1.addSlidesBefore; var addSlidesAfter=ref$1.addSlidesAfter; var ref$2=swiper.virtual; var previousFrom=ref$2.from; var previousTo=ref$2.to; var slides=ref$2.slides; var previousSlidesGrid=ref$2.slidesGrid; var renderSlide=ref$2.renderSlide; var previousOffset=ref$2.offset; swiper.updateActiveIndex(); var activeIndex=swiper.activeIndex||0; var offsetProp; if(swiper.rtlTranslate){ offsetProp='right'; }else{ offsetProp=swiper.isHorizontal() ? 'left':'top'; } var slidesAfter; var slidesBefore; if(centeredSlides){ slidesAfter=Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; slidesBefore=Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; }else{ slidesAfter=slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; slidesBefore=slidesPerGroup + addSlidesAfter; } var from=Math.max((activeIndex||0) - slidesBefore, 0); var to=Math.min((activeIndex||0) + slidesAfter, slides.length - 1); var offset=(swiper.slidesGrid[from]||0) - (swiper.slidesGrid[0]||0); Utils.extend(swiper.virtual, { from: from, to: to, offset: offset, slidesGrid: swiper.slidesGrid, }); function onRendered(){ swiper.updateSlides(); swiper.updateProgress(); swiper.updateSlidesClasses(); if(swiper.lazy&&swiper.params.lazy.enabled){ swiper.lazy.load(); }} if(previousFrom===from&&previousTo===to&&!force){ if(swiper.slidesGrid!==previousSlidesGrid&&offset!==previousOffset){ swiper.slides.css(offsetProp, (offset + "px")); } swiper.updateProgress(); return; } if(swiper.params.virtual.renderExternal){ swiper.params.virtual.renderExternal.call(swiper, { offset: offset, from: from, to: to, slides: (function getSlides(){ var slidesToRender=[]; for (var i=from; i <=to; i +=1){ slidesToRender.push(slides[i]); } return slidesToRender; }()), }); onRendered(); return; } var prependIndexes=[]; var appendIndexes=[]; if(force){ swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove(); }else{ for (var i=previousFrom; i <=previousTo; i +=1){ if(i < from||i > to){ swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove(); }} } for (var i$1=0; i$1 < slides.length; i$1 +=1){ if(i$1 >=from&&i$1 <=to){ if(typeof previousTo==='undefined'||force){ appendIndexes.push(i$1); }else{ if(i$1 > previousTo){ appendIndexes.push(i$1); } if(i$1 < previousFrom){ prependIndexes.push(i$1); }} }} appendIndexes.forEach(function (index){ swiper.$wrapperEl.append(renderSlide(slides[index], index)); }); prependIndexes.sort(function (a, b){ return a < b; }).forEach(function (index){ swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); }); swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px")); onRendered(); }, renderSlide: function renderSlide(slide, index){ var swiper=this; var params=swiper.params.virtual; if(params.cache&&swiper.virtual.cache[index]){ return swiper.virtual.cache[index]; } var $slideEl=params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(("
" + slide + "
")); if(!$slideEl.attr('data-swiper-slide-index')){ $slideEl.attr('data-swiper-slide-index', index); } if(params.cache){ swiper.virtual.cache[index]=$slideEl; } return $slideEl; }, appendSlide: function appendSlide(slide){ var swiper=this; swiper.virtual.slides.push(slide); swiper.virtual.update(true); }, prependSlide: function prependSlide(slide){ var swiper=this; swiper.virtual.slides.unshift(slide); if(swiper.params.virtual.cache){ var cache=swiper.virtual.cache; var newCache={}; Object.keys(cache).forEach(function (cachedIndex){ newCache[cachedIndex + 1]=cache[cachedIndex]; }); swiper.virtual.cache=newCache; } swiper.virtual.update(true); swiper.slideNext(0); }, }; var Virtual$1={ name: 'virtual', params: { virtual: { enabled: false, slides: [], cache: true, renderSlide: null, renderExternal: null, addSlidesBefore: 0, addSlidesAfter: 0, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { virtual: { update: Virtual.update.bind(swiper), appendSlide: Virtual.appendSlide.bind(swiper), prependSlide: Virtual.prependSlide.bind(swiper), renderSlide: Virtual.renderSlide.bind(swiper), slides: swiper.params.virtual.slides, cache: {}, }, }); }, on: { beforeInit: function beforeInit(){ var swiper=this; if(!swiper.params.virtual.enabled){ return; } swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual")); var overwriteParams={ watchSlidesProgress: true, }; Utils.extend(swiper.params, overwriteParams); Utils.extend(swiper.originalParams, overwriteParams); swiper.virtual.update(); }, setTranslate: function setTranslate(){ var swiper=this; if(!swiper.params.virtual.enabled){ return; } swiper.virtual.update(); }, }, }; var Keyboard={ handle: function handle(event){ var swiper=this; var rtl=swiper.rtlTranslate; var e=event; if(e.originalEvent){ e=e.originalEvent; } var kc=e.keyCode||e.charCode; if(!swiper.allowSlideNext&&((swiper.isHorizontal()&&kc===39)||(swiper.isVertical()&&kc===40))){ return false; } if(!swiper.allowSlidePrev&&((swiper.isHorizontal()&&kc===37)||(swiper.isVertical()&&kc===38))){ return false; } if(e.shiftKey||e.altKey||e.ctrlKey||e.metaKey){ return undefined; } if(doc.activeElement&&doc.activeElement.nodeName&&(doc.activeElement.nodeName.toLowerCase()==='input'||doc.activeElement.nodeName.toLowerCase()==='textarea')){ return undefined; } if(swiper.params.keyboard.onlyInViewport&&(kc===37||kc===39||kc===38||kc===40)){ var inView=false; if(swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0&&swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length===0){ return undefined; } var windowWidth=win.innerWidth; var windowHeight=win.innerHeight; var swiperOffset=swiper.$el.offset(); if(rtl){ swiperOffset.left -=swiper.$el[0].scrollLeft; } var swiperCoord=[ [swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ]; for (var i=0; i < swiperCoord.length; i +=1){ var point=swiperCoord[i]; if(point[0] >=0&&point[0] <=windowWidth && point[1] >=0&&point[1] <=windowHeight ){ inView=true; }} if(!inView){ return undefined; }} if(swiper.isHorizontal()){ if(kc===37||kc===39){ if(e.preventDefault){ e.preventDefault(); }else{ e.returnValue=false; }} if((kc===39&&!rtl)||(kc===37&&rtl)){ swiper.slideNext(); } if((kc===37&&!rtl)||(kc===39&&rtl)){ swiper.slidePrev(); }}else{ if(kc===38||kc===40){ if(e.preventDefault){ e.preventDefault(); }else{ e.returnValue=false; }} if(kc===40){ swiper.slideNext(); } if(kc===38){ swiper.slidePrev(); }} swiper.emit('keyPress', kc); return undefined; }, enable: function enable(){ var swiper=this; if(swiper.keyboard.enabled){ return; } $(doc).on('keydown', swiper.keyboard.handle); swiper.keyboard.enabled=true; }, disable: function disable(){ var swiper=this; if(!swiper.keyboard.enabled){ return; } $(doc).off('keydown', swiper.keyboard.handle); swiper.keyboard.enabled=false; }, }; var Keyboard$1={ name: 'keyboard', params: { keyboard: { enabled: false, onlyInViewport: true, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { keyboard: { enabled: false, enable: Keyboard.enable.bind(swiper), disable: Keyboard.disable.bind(swiper), handle: Keyboard.handle.bind(swiper), }, }); }, on: { init: function init(){ var swiper=this; if(swiper.params.keyboard.enabled){ swiper.keyboard.enable(); }}, destroy: function destroy(){ var swiper=this; if(swiper.keyboard.enabled){ swiper.keyboard.disable(); }}, }, }; function isEventSupported(){ var eventName='onwheel'; var isSupported=eventName in doc; if(!isSupported){ var element=doc.createElement('div'); element.setAttribute(eventName, 'return;'); isSupported=typeof element[eventName]==='function'; } if(!isSupported && doc.implementation && doc.implementation.hasFeature && doc.implementation.hasFeature('', '')!==true ){ isSupported=doc.implementation.hasFeature('Events.wheel', '3.0'); } return isSupported; } var Mousewheel={ lastScrollTime: Utils.now(), event: (function getEvent(){ if(win.navigator.userAgent.indexOf('firefox') > -1){ return 'DOMMouseScroll'; } return isEventSupported() ? 'wheel':'mousewheel'; }()), normalize: function normalize(e){ var PIXEL_STEP=10; var LINE_HEIGHT=40; var PAGE_HEIGHT=800; var sX=0; var sY=0; var pX=0; var pY=0; if('detail' in e){ sY=e.detail; } if('wheelDelta' in e){ sY=-e.wheelDelta / 120; } if('wheelDeltaY' in e){ sY=-e.wheelDeltaY / 120; } if('wheelDeltaX' in e){ sX=-e.wheelDeltaX / 120; } if('axis' in e&&e.axis===e.HORIZONTAL_AXIS){ sX=sY; sY=0; } pX=sX * PIXEL_STEP; pY=sY * PIXEL_STEP; if('deltaY' in e){ pY=e.deltaY; } if('deltaX' in e){ pX=e.deltaX; } if((pX||pY)&&e.deltaMode){ if(e.deltaMode===1){ pX *=LINE_HEIGHT; pY *=LINE_HEIGHT; }else{ pX *=PAGE_HEIGHT; pY *=PAGE_HEIGHT; }} if(pX&&!sX){ sX=(pX < 1) ? -1:1; } if(pY&&!sY){ sY=(pY < 1) ? -1:1; } return { spinX: sX, spinY: sY, pixelX: pX, pixelY: pY, };}, handleMouseEnter: function handleMouseEnter(){ var swiper=this; swiper.mouseEntered=true; }, handleMouseLeave: function handleMouseLeave(){ var swiper=this; swiper.mouseEntered=false; }, handle: function handle(event){ var e=event; var swiper=this; var params=swiper.params.mousewheel; if(!swiper.mouseEntered&&!params.releaseOnEdges){ return true; } if(e.originalEvent){ e=e.originalEvent; } var delta=0; var rtlFactor=swiper.rtlTranslate ? -1:1; var data=Mousewheel.normalize(e); if(params.forceToAxis){ if(swiper.isHorizontal()){ if(Math.abs(data.pixelX) > Math.abs(data.pixelY)){ delta=data.pixelX * rtlFactor; }else{ return true; }}else if(Math.abs(data.pixelY) > Math.abs(data.pixelX)){ delta=data.pixelY; }else{ return true; }}else{ delta=Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor:-data.pixelY; } if(delta===0){ return true; } if(params.invert){ delta=-delta; } if(!swiper.params.freeMode){ if(Utils.now() - swiper.mousewheel.lastScrollTime > 60){ if(delta < 0){ if((!swiper.isEnd||swiper.params.loop)&&!swiper.animating){ swiper.slideNext(); swiper.emit('scroll', e); }else if(params.releaseOnEdges){ return true; }}else if((!swiper.isBeginning||swiper.params.loop)&&!swiper.animating){ swiper.slidePrev(); swiper.emit('scroll', e); }else if(params.releaseOnEdges){ return true; }} swiper.mousewheel.lastScrollTime=(new win.Date()).getTime(); }else{ if(swiper.params.loop){ swiper.loopFix(); } var position=swiper.getTranslate() + (delta * params.sensitivity); var wasBeginning=swiper.isBeginning; var wasEnd=swiper.isEnd; if(position >=swiper.minTranslate()){ position=swiper.minTranslate(); } if(position <=swiper.maxTranslate()){ position=swiper.maxTranslate(); } swiper.setTransition(0); swiper.setTranslate(position); swiper.updateProgress(); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); if((!wasBeginning&&swiper.isBeginning)||(!wasEnd&&swiper.isEnd)){ swiper.updateSlidesClasses(); } if(swiper.params.freeModeSticky){ clearTimeout(swiper.mousewheel.timeout); swiper.mousewheel.timeout=Utils.nextTick(function (){ swiper.slideToClosest(); }, 300); } swiper.emit('scroll', e); if(swiper.params.autoplay&&swiper.params.autoplayDisableOnInteraction){ swiper.autoplay.stop(); } if(position===swiper.minTranslate()||position===swiper.maxTranslate()){ return true; }} if(e.preventDefault){ e.preventDefault(); }else{ e.returnValue=false; } return false; }, enable: function enable(){ var swiper=this; if(!Mousewheel.event){ return false; } if(swiper.mousewheel.enabled){ return false; } var target=swiper.$el; if(swiper.params.mousewheel.eventsTarged!=='container'){ target=$(swiper.params.mousewheel.eventsTarged); } target.on('mouseenter', swiper.mousewheel.handleMouseEnter); target.on('mouseleave', swiper.mousewheel.handleMouseLeave); target.on(Mousewheel.event, swiper.mousewheel.handle); swiper.mousewheel.enabled=true; return true; }, disable: function disable(){ var swiper=this; if(!Mousewheel.event){ return false; } if(!swiper.mousewheel.enabled){ return false; } var target=swiper.$el; if(swiper.params.mousewheel.eventsTarged!=='container'){ target=$(swiper.params.mousewheel.eventsTarged); } target.off(Mousewheel.event, swiper.mousewheel.handle); swiper.mousewheel.enabled=false; return true; }, }; var Mousewheel$1={ name: 'mousewheel', params: { mousewheel: { enabled: false, releaseOnEdges: false, invert: false, forceToAxis: false, sensitivity: 1, eventsTarged: 'container', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { mousewheel: { enabled: false, enable: Mousewheel.enable.bind(swiper), disable: Mousewheel.disable.bind(swiper), handle: Mousewheel.handle.bind(swiper), handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), lastScrollTime: Utils.now(), }, }); }, on: { init: function init(){ var swiper=this; if(swiper.params.mousewheel.enabled){ swiper.mousewheel.enable(); }}, destroy: function destroy(){ var swiper=this; if(swiper.mousewheel.enabled){ swiper.mousewheel.disable(); }}, }, }; var Navigation={ update: function update(){ var swiper=this; var params=swiper.params.navigation; if(swiper.params.loop){ return; } var ref=swiper.navigation; var $nextEl=ref.$nextEl; var $prevEl=ref.$prevEl; if($prevEl&&$prevEl.length > 0){ if(swiper.isBeginning){ $prevEl.addClass(params.disabledClass); }else{ $prevEl.removeClass(params.disabledClass); } $prevEl[swiper.params.watchOverflow&&swiper.isLocked ? 'addClass':'removeClass'](params.lockClass); } if($nextEl&&$nextEl.length > 0){ if(swiper.isEnd){ $nextEl.addClass(params.disabledClass); }else{ $nextEl.removeClass(params.disabledClass); } $nextEl[swiper.params.watchOverflow&&swiper.isLocked ? 'addClass':'removeClass'](params.lockClass); }}, init: function init(){ var swiper=this; var params=swiper.params.navigation; if(!(params.nextEl||params.prevEl)){ return; } var $nextEl; var $prevEl; if(params.nextEl){ $nextEl=$(params.nextEl); if(swiper.params.uniqueNavElements && typeof params.nextEl==='string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length===1 ){ $nextEl=swiper.$el.find(params.nextEl); }} if(params.prevEl){ $prevEl=$(params.prevEl); if(swiper.params.uniqueNavElements && typeof params.prevEl==='string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length===1 ){ $prevEl=swiper.$el.find(params.prevEl); }} if($nextEl&&$nextEl.length > 0){ $nextEl.on('click', function (e){ e.preventDefault(); if(swiper.isEnd&&!swiper.params.loop){ return; } swiper.slideNext(); }); } if($prevEl&&$prevEl.length > 0){ $prevEl.on('click', function (e){ e.preventDefault(); if(swiper.isBeginning&&!swiper.params.loop){ return; } swiper.slidePrev(); }); } Utils.extend(swiper.navigation, { $nextEl: $nextEl, nextEl: $nextEl&&$nextEl[0], $prevEl: $prevEl, prevEl: $prevEl&&$prevEl[0], }); }, destroy: function destroy(){ var swiper=this; var ref=swiper.navigation; var $nextEl=ref.$nextEl; var $prevEl=ref.$prevEl; if($nextEl&&$nextEl.length){ $nextEl.off('click'); $nextEl.removeClass(swiper.params.navigation.disabledClass); } if($prevEl&&$prevEl.length){ $prevEl.off('click'); $prevEl.removeClass(swiper.params.navigation.disabledClass); }}, }; var Navigation$1={ name: 'navigation', params: { navigation: { nextEl: null, prevEl: null, hideOnClick: false, disabledClass: 'swiper-button-disabled', hiddenClass: 'swiper-button-hidden', lockClass: 'swiper-button-lock', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { navigation: { init: Navigation.init.bind(swiper), update: Navigation.update.bind(swiper), destroy: Navigation.destroy.bind(swiper), }, }); }, on: { init: function init(){ var swiper=this; swiper.navigation.init(); swiper.navigation.update(); }, toEdge: function toEdge(){ var swiper=this; swiper.navigation.update(); }, fromEdge: function fromEdge(){ var swiper=this; swiper.navigation.update(); }, destroy: function destroy(){ var swiper=this; swiper.navigation.destroy(); }, click: function click(e){ var swiper=this; var ref=swiper.navigation; var $nextEl=ref.$nextEl; var $prevEl=ref.$prevEl; if(swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl) ){ if($nextEl){ $nextEl.toggleClass(swiper.params.navigation.hiddenClass); } if($prevEl){ $prevEl.toggleClass(swiper.params.navigation.hiddenClass); }} }, }, }; var Pagination={ update: function update(){ var swiper=this; var rtl=swiper.rtl; var params=swiper.params.pagination; if(!params.el||!swiper.pagination.el||!swiper.pagination.$el||swiper.pagination.$el.length===0){ return; } var slidesLength=swiper.virtual&&swiper.params.virtual.enabled ? swiper.virtual.slides.length:swiper.slides.length; var $el=swiper.pagination.$el; var current; var total=swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup):swiper.snapGrid.length; if(swiper.params.loop){ current=Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); if(current > slidesLength - 1 - (swiper.loopedSlides * 2)){ current -=(slidesLength - (swiper.loopedSlides * 2)); } if(current > total - 1){ current -=total; } if(current < 0&&swiper.params.paginationType!=='bullets'){ current=total + current; }}else if(typeof swiper.snapIndex!=='undefined'){ current=swiper.snapIndex; }else{ current=swiper.activeIndex||0; } if(params.type==='bullets'&&swiper.pagination.bullets&&swiper.pagination.bullets.length > 0){ var bullets=swiper.pagination.bullets; var firstIndex; var lastIndex; var midIndex; if(params.dynamicBullets){ swiper.pagination.bulletSize=bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth':'outerHeight'](true); $el.css(swiper.isHorizontal() ? 'width':'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px")); if(params.dynamicMainBullets > 1&&swiper.previousIndex!==undefined){ swiper.pagination.dynamicBulletIndex +=(current - swiper.previousIndex); if(swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)){ swiper.pagination.dynamicBulletIndex=params.dynamicMainBullets - 1; }else if(swiper.pagination.dynamicBulletIndex < 0){ swiper.pagination.dynamicBulletIndex=0; }} firstIndex=current - swiper.pagination.dynamicBulletIndex; lastIndex=firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); midIndex=(lastIndex + firstIndex) / 2; } bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main")); if($el.length > 1){ bullets.each(function (index, bullet){ var $bullet=$(bullet); var bulletIndex=$bullet.index(); if(bulletIndex===current){ $bullet.addClass(params.bulletActiveClass); } if(params.dynamicBullets){ if(bulletIndex >=firstIndex&&bulletIndex <=lastIndex){ $bullet.addClass(((params.bulletActiveClass) + "-main")); } if(bulletIndex===firstIndex){ $bullet .prev() .addClass(((params.bulletActiveClass) + "-prev")) .prev() .addClass(((params.bulletActiveClass) + "-prev-prev")); } if(bulletIndex===lastIndex){ $bullet .next() .addClass(((params.bulletActiveClass) + "-next")) .next() .addClass(((params.bulletActiveClass) + "-next-next")); }} }); }else{ var $bullet=bullets.eq(current); $bullet.addClass(params.bulletActiveClass); if(params.dynamicBullets){ var $firstDisplayedBullet=bullets.eq(firstIndex); var $lastDisplayedBullet=bullets.eq(lastIndex); for (var i=firstIndex; i <=lastIndex; i +=1){ bullets.eq(i).addClass(((params.bulletActiveClass) + "-main")); } $firstDisplayedBullet .prev() .addClass(((params.bulletActiveClass) + "-prev")) .prev() .addClass(((params.bulletActiveClass) + "-prev-prev")); $lastDisplayedBullet .next() .addClass(((params.bulletActiveClass) + "-next")) .next() .addClass(((params.bulletActiveClass) + "-next-next")); }} if(params.dynamicBullets){ var dynamicBulletsLength=Math.min(bullets.length, params.dynamicMainBullets + 4); var bulletsOffset=(((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); var offsetProp=rtl ? 'right':'left'; bullets.css(swiper.isHorizontal() ? offsetProp:'top', (bulletsOffset + "px")); }} if(params.type==='fraction'){ $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1)); $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total)); } if(params.type==='progressbar'){ var progressbarDirection; if(params.progressbarOpposite){ progressbarDirection=swiper.isHorizontal() ? 'vertical':'horizontal'; }else{ progressbarDirection=swiper.isHorizontal() ? 'horizontal':'vertical'; } var scale=(current + 1) / total; var scaleX=1; var scaleY=1; if(progressbarDirection==='horizontal'){ scaleX=scale; }else{ scaleY=scale; } $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed); } if(params.type==='custom'&¶ms.renderCustom){ $el.html(params.renderCustom(swiper, current + 1, total)); swiper.emit('paginationRender', swiper, $el[0]); }else{ swiper.emit('paginationUpdate', swiper, $el[0]); } $el[swiper.params.watchOverflow&&swiper.isLocked ? 'addClass':'removeClass'](params.lockClass); }, render: function render(){ var swiper=this; var params=swiper.params.pagination; if(!params.el||!swiper.pagination.el||!swiper.pagination.$el||swiper.pagination.$el.length===0){ return; } var slidesLength=swiper.virtual&&swiper.params.virtual.enabled ? swiper.virtual.slides.length:swiper.slides.length; var $el=swiper.pagination.$el; var paginationHTML=''; if(params.type==='bullets'){ var numberOfBullets=swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup):swiper.snapGrid.length; for (var i=0; i < numberOfBullets; i +=1){ if(params.renderBullet){ paginationHTML +=params.renderBullet.call(swiper, i, params.bulletClass); }else{ paginationHTML +="<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\">"; }} $el.html(paginationHTML); swiper.pagination.bullets=$el.find(("." + (params.bulletClass))); } if(params.type==='fraction'){ if(params.renderFraction){ paginationHTML=params.renderFraction.call(swiper, params.currentClass, params.totalClass); }else{ paginationHTML="" + ' / ' + ""; } $el.html(paginationHTML); } if(params.type==='progressbar'){ if(params.renderProgressbar){ paginationHTML=params.renderProgressbar.call(swiper, params.progressbarFillClass); }else{ paginationHTML=""; } $el.html(paginationHTML); } if(params.type!=='custom'){ swiper.emit('paginationRender', swiper.pagination.$el[0]); }}, init: function init(){ var swiper=this; var params=swiper.params.pagination; if(!params.el){ return; } var $el=$(params.el); if($el.length===0){ return; } if(swiper.params.uniqueNavElements && typeof params.el==='string' && $el.length > 1 && swiper.$el.find(params.el).length===1 ){ $el=swiper.$el.find(params.el); } if(params.type==='bullets'&¶ms.clickable){ $el.addClass(params.clickableClass); } $el.addClass(params.modifierClass + params.type); if(params.type==='bullets'&¶ms.dynamicBullets){ $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic")); swiper.pagination.dynamicBulletIndex=0; if(params.dynamicMainBullets < 1){ params.dynamicMainBullets=1; }} if(params.type==='progressbar'&¶ms.progressbarOpposite){ $el.addClass(params.progressbarOppositeClass); } if(params.clickable){ $el.on('click', ("." + (params.bulletClass)), function onClick(e){ e.preventDefault(); var index=$(this).index() * swiper.params.slidesPerGroup; if(swiper.params.loop){ index +=swiper.loopedSlides; } swiper.slideTo(index); }); } Utils.extend(swiper.pagination, { $el: $el, el: $el[0], }); }, destroy: function destroy(){ var swiper=this; var params=swiper.params.pagination; if(!params.el||!swiper.pagination.el||!swiper.pagination.$el||swiper.pagination.$el.length===0){ return; } var $el=swiper.pagination.$el; $el.removeClass(params.hiddenClass); $el.removeClass(params.modifierClass + params.type); if(swiper.pagination.bullets){ swiper.pagination.bullets.removeClass(params.bulletActiveClass); } if(params.clickable){ $el.off('click', ("." + (params.bulletClass))); }}, }; var Pagination$1={ name: 'pagination', params: { pagination: { el: null, bulletElement: 'span', clickable: false, hideOnClick: false, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: false, type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' dynamicBullets: false, dynamicMainBullets: 1, formatFractionCurrent: function (number){ return number; }, formatFractionTotal: function (number){ return number; }, bulletClass: 'swiper-pagination-bullet', bulletActiveClass: 'swiper-pagination-bullet-active', modifierClass: 'swiper-pagination-', currentClass: 'swiper-pagination-current', totalClass: 'swiper-pagination-total', hiddenClass: 'swiper-pagination-hidden', progressbarFillClass: 'swiper-pagination-progressbar-fill', progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', clickableClass: 'swiper-pagination-clickable', lockClass: 'swiper-pagination-lock', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { pagination: { init: Pagination.init.bind(swiper), render: Pagination.render.bind(swiper), update: Pagination.update.bind(swiper), destroy: Pagination.destroy.bind(swiper), dynamicBulletIndex: 0, }, }); }, on: { init: function init(){ var swiper=this; swiper.pagination.init(); swiper.pagination.render(); swiper.pagination.update(); }, activeIndexChange: function activeIndexChange(){ var swiper=this; if(swiper.params.loop){ swiper.pagination.update(); }else if(typeof swiper.snapIndex==='undefined'){ swiper.pagination.update(); }}, snapIndexChange: function snapIndexChange(){ var swiper=this; if(!swiper.params.loop){ swiper.pagination.update(); }}, slidesLengthChange: function slidesLengthChange(){ var swiper=this; if(swiper.params.loop){ swiper.pagination.render(); swiper.pagination.update(); }}, snapGridLengthChange: function snapGridLengthChange(){ var swiper=this; if(!swiper.params.loop){ swiper.pagination.render(); swiper.pagination.update(); }}, destroy: function destroy(){ var swiper=this; swiper.pagination.destroy(); }, click: function click(e){ var swiper=this; if(swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass) ){ swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); }}, }, }; var Scrollbar={ setTranslate: function setTranslate(){ var swiper=this; if(!swiper.params.scrollbar.el||!swiper.scrollbar.el){ return; } var scrollbar=swiper.scrollbar; var rtl=swiper.rtlTranslate; var progress=swiper.progress; var dragSize=scrollbar.dragSize; var trackSize=scrollbar.trackSize; var $dragEl=scrollbar.$dragEl; var $el=scrollbar.$el; var params=swiper.params.scrollbar; var newSize=dragSize; var newPos=(trackSize - dragSize) * progress; if(rtl){ newPos=-newPos; if(newPos > 0){ newSize=dragSize - newPos; newPos=0; }else if(-newPos + dragSize > trackSize){ newSize=trackSize + newPos; }}else if(newPos < 0){ newSize=dragSize + newPos; newPos=0; }else if(newPos + dragSize > trackSize){ newSize=trackSize - newPos; } if(swiper.isHorizontal()){ if(Support.transforms3d){ $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)")); }else{ $dragEl.transform(("translateX(" + newPos + "px)")); } $dragEl[0].style.width=newSize + "px"; }else{ if(Support.transforms3d){ $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)")); }else{ $dragEl.transform(("translateY(" + newPos + "px)")); } $dragEl[0].style.height=newSize + "px"; } if(params.hide){ clearTimeout(swiper.scrollbar.timeout); $el[0].style.opacity=1; swiper.scrollbar.timeout=setTimeout(function (){ $el[0].style.opacity=0; $el.transition(400); }, 1000); }}, setTransition: function setTransition(duration){ var swiper=this; if(!swiper.params.scrollbar.el||!swiper.scrollbar.el){ return; } swiper.scrollbar.$dragEl.transition(duration); }, updateSize: function updateSize(){ var swiper=this; if(!swiper.params.scrollbar.el||!swiper.scrollbar.el){ return; } var scrollbar=swiper.scrollbar; var $dragEl=scrollbar.$dragEl; var $el=scrollbar.$el; $dragEl[0].style.width=''; $dragEl[0].style.height=''; var trackSize=swiper.isHorizontal() ? $el[0].offsetWidth:$el[0].offsetHeight; var divider=swiper.size / swiper.virtualSize; var moveDivider=divider * (trackSize / swiper.size); var dragSize; if(swiper.params.scrollbar.dragSize==='auto'){ dragSize=trackSize * divider; }else{ dragSize=parseInt(swiper.params.scrollbar.dragSize, 10); } if(swiper.isHorizontal()){ $dragEl[0].style.width=dragSize + "px"; }else{ $dragEl[0].style.height=dragSize + "px"; } if(divider >=1){ $el[0].style.display='none'; }else{ $el[0].style.display=''; } if(swiper.params.scrollbarHide){ $el[0].style.opacity=0; } Utils.extend(scrollbar, { trackSize: trackSize, divider: divider, moveDivider: moveDivider, dragSize: dragSize, }); scrollbar.$el[swiper.params.watchOverflow&&swiper.isLocked ? 'addClass':'removeClass'](swiper.params.scrollbar.lockClass); }, setDragPosition: function setDragPosition(e){ var swiper=this; var scrollbar=swiper.scrollbar; var rtl=swiper.rtlTranslate; var $el=scrollbar.$el; var dragSize=scrollbar.dragSize; var trackSize=scrollbar.trackSize; var pointerPosition; if(swiper.isHorizontal()){ pointerPosition=((e.type==='touchstart'||e.type==='touchmove') ? e.targetTouches[0].pageX:e.pageX||e.clientX); }else{ pointerPosition=((e.type==='touchstart'||e.type==='touchmove') ? e.targetTouches[0].pageY:e.pageY||e.clientY); } var positionRatio; positionRatio=((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left':'top'] - (dragSize / 2)) / (trackSize - dragSize); positionRatio=Math.max(Math.min(positionRatio, 1), 0); if(rtl){ positionRatio=1 - positionRatio; } var position=swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); swiper.updateProgress(position); swiper.setTranslate(position); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); }, onDragStart: function onDragStart(e){ var swiper=this; var params=swiper.params.scrollbar; var scrollbar=swiper.scrollbar; var $wrapperEl=swiper.$wrapperEl; var $el=scrollbar.$el; var $dragEl=scrollbar.$dragEl; swiper.scrollbar.isTouched=true; e.preventDefault(); e.stopPropagation(); $wrapperEl.transition(100); $dragEl.transition(100); scrollbar.setDragPosition(e); clearTimeout(swiper.scrollbar.dragTimeout); $el.transition(0); if(params.hide){ $el.css('opacity', 1); } swiper.emit('scrollbarDragStart', e); }, onDragMove: function onDragMove(e){ var swiper=this; var scrollbar=swiper.scrollbar; var $wrapperEl=swiper.$wrapperEl; var $el=scrollbar.$el; var $dragEl=scrollbar.$dragEl; if(!swiper.scrollbar.isTouched){ return; } if(e.preventDefault){ e.preventDefault(); }else{ e.returnValue=false; } scrollbar.setDragPosition(e); $wrapperEl.transition(0); $el.transition(0); $dragEl.transition(0); swiper.emit('scrollbarDragMove', e); }, onDragEnd: function onDragEnd(e){ var swiper=this; var params=swiper.params.scrollbar; var scrollbar=swiper.scrollbar; var $el=scrollbar.$el; if(!swiper.scrollbar.isTouched){ return; } swiper.scrollbar.isTouched=false; if(params.hide){ clearTimeout(swiper.scrollbar.dragTimeout); swiper.scrollbar.dragTimeout=Utils.nextTick(function (){ $el.css('opacity', 0); $el.transition(400); }, 1000); } swiper.emit('scrollbarDragEnd', e); if(params.snapOnRelease){ swiper.slideToClosest(); }}, enableDraggable: function enableDraggable(){ var swiper=this; if(!swiper.params.scrollbar.el){ return; } var scrollbar=swiper.scrollbar; var touchEvents=swiper.touchEvents; var touchEventsDesktop=swiper.touchEventsDesktop; var params=swiper.params; var $el=scrollbar.$el; var target=$el[0]; var activeListener=Support.passiveListener&¶ms.passiveListeners ? { passive: false, capture: false }:false; var passiveListener=Support.passiveListener&¶ms.passiveListeners ? { passive: true, capture: false }:false; if(!Support.touch&&(Support.pointerEvents||Support.prefixedPointerEvents)){ target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); }else{ if(Support.touch){ target.addEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener); target.addEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener); target.addEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener); } if((params.simulateTouch&&!Device.ios&&!Device.android)||(params.simulateTouch&&!Support.touch&&Device.ios)){ target.addEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener); doc.addEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener); doc.addEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener); }} }, disableDraggable: function disableDraggable(){ var swiper=this; if(!swiper.params.scrollbar.el){ return; } var scrollbar=swiper.scrollbar; var touchEvents=swiper.touchEvents; var touchEventsDesktop=swiper.touchEventsDesktop; var params=swiper.params; var $el=scrollbar.$el; var target=$el[0]; var activeListener=Support.passiveListener&¶ms.passiveListeners ? { passive: false, capture: false }:false; var passiveListener=Support.passiveListener&¶ms.passiveListeners ? { passive: true, capture: false }:false; if(!Support.touch&&(Support.pointerEvents||Support.prefixedPointerEvents)){ target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); }else{ if(Support.touch){ target.removeEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener); target.removeEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener); target.removeEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener); } if((params.simulateTouch&&!Device.ios&&!Device.android)||(params.simulateTouch&&!Support.touch&&Device.ios)){ target.removeEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener); doc.removeEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener); doc.removeEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener); }} }, init: function init(){ var swiper=this; if(!swiper.params.scrollbar.el){ return; } var scrollbar=swiper.scrollbar; var $swiperEl=swiper.$el; var params=swiper.params.scrollbar; var $el=$(params.el); if(swiper.params.uniqueNavElements&&typeof params.el==='string'&&$el.length > 1&&$swiperEl.find(params.el).length===1){ $el=$swiperEl.find(params.el); } var $dragEl=$el.find(("." + (swiper.params.scrollbar.dragClass))); if($dragEl.length===0){ $dragEl=$(("
")); $el.append($dragEl); } Utils.extend(scrollbar, { $el: $el, el: $el[0], $dragEl: $dragEl, dragEl: $dragEl[0], }); if(params.draggable){ scrollbar.enableDraggable(); }}, destroy: function destroy(){ var swiper=this; swiper.scrollbar.disableDraggable(); }, }; var Scrollbar$1={ name: 'scrollbar', params: { scrollbar: { el: null, dragSize: 'auto', hide: false, draggable: false, snapOnRelease: true, lockClass: 'swiper-scrollbar-lock', dragClass: 'swiper-scrollbar-drag', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { scrollbar: { init: Scrollbar.init.bind(swiper), destroy: Scrollbar.destroy.bind(swiper), updateSize: Scrollbar.updateSize.bind(swiper), setTranslate: Scrollbar.setTranslate.bind(swiper), setTransition: Scrollbar.setTransition.bind(swiper), enableDraggable: Scrollbar.enableDraggable.bind(swiper), disableDraggable: Scrollbar.disableDraggable.bind(swiper), setDragPosition: Scrollbar.setDragPosition.bind(swiper), onDragStart: Scrollbar.onDragStart.bind(swiper), onDragMove: Scrollbar.onDragMove.bind(swiper), onDragEnd: Scrollbar.onDragEnd.bind(swiper), isTouched: false, timeout: null, dragTimeout: null, }, }); }, on: { init: function init(){ var swiper=this; swiper.scrollbar.init(); swiper.scrollbar.updateSize(); swiper.scrollbar.setTranslate(); }, update: function update(){ var swiper=this; swiper.scrollbar.updateSize(); }, resize: function resize(){ var swiper=this; swiper.scrollbar.updateSize(); }, observerUpdate: function observerUpdate(){ var swiper=this; swiper.scrollbar.updateSize(); }, setTranslate: function setTranslate(){ var swiper=this; swiper.scrollbar.setTranslate(); }, setTransition: function setTransition(duration){ var swiper=this; swiper.scrollbar.setTransition(duration); }, destroy: function destroy(){ var swiper=this; swiper.scrollbar.destroy(); }, }, }; var Parallax={ setTransform: function setTransform(el, progress){ var swiper=this; var rtl=swiper.rtl; var $el=$(el); var rtlFactor=rtl ? -1:1; var p=$el.attr('data-swiper-parallax')||'0'; var x=$el.attr('data-swiper-parallax-x'); var y=$el.attr('data-swiper-parallax-y'); var scale=$el.attr('data-swiper-parallax-scale'); var opacity=$el.attr('data-swiper-parallax-opacity'); if(x||y){ x=x||'0'; y=y||'0'; }else if(swiper.isHorizontal()){ x=p; y='0'; }else{ y=p; x='0'; } if((x).indexOf('%') >=0){ x=(parseInt(x, 10) * progress * rtlFactor) + "%"; }else{ x=(x * progress * rtlFactor) + "px"; } if((y).indexOf('%') >=0){ y=(parseInt(y, 10) * progress) + "%"; }else{ y=(y * progress) + "px"; } if(typeof opacity!=='undefined'&&opacity!==null){ var currentOpacity=opacity - ((opacity - 1) * (1 - Math.abs(progress))); $el[0].style.opacity=currentOpacity; } if(typeof scale==='undefined'||scale===null){ $el.transform(("translate3d(" + x + ", " + y + ", 0px)")); }else{ var currentScale=scale - ((scale - 1) * (1 - Math.abs(progress))); $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")")); }}, setTranslate: function setTranslate(){ var swiper=this; var $el=swiper.$el; var slides=swiper.slides; var progress=swiper.progress; var snapGrid=swiper.snapGrid; $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') .each(function (index, el){ swiper.parallax.setTransform(el, progress); }); slides.each(function (slideIndex, slideEl){ var slideProgress=slideEl.progress; if(swiper.params.slidesPerGroup > 1&&swiper.params.slidesPerView!=='auto'){ slideProgress +=Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); } slideProgress=Math.min(Math.max(slideProgress, -1), 1); $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') .each(function (index, el){ swiper.parallax.setTransform(el, slideProgress); }); }); }, setTransition: function setTransition(duration){ if(duration===void 0) duration=this.params.speed; var swiper=this; var $el=swiper.$el; $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') .each(function (index, parallaxEl){ var $parallaxEl=$(parallaxEl); var parallaxDuration=parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10)||duration; if(duration===0){ parallaxDuration=0; } $parallaxEl.transition(parallaxDuration); }); }, }; var Parallax$1={ name: 'parallax', params: { parallax: { enabled: false, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { parallax: { setTransform: Parallax.setTransform.bind(swiper), setTranslate: Parallax.setTranslate.bind(swiper), setTransition: Parallax.setTransition.bind(swiper), }, }); }, on: { beforeInit: function beforeInit(){ var swiper=this; if(!swiper.params.parallax.enabled){ return; } swiper.params.watchSlidesProgress=true; swiper.originalParams.watchSlidesProgress=true; }, init: function init(){ var swiper=this; if(!swiper.params.parallax){ return; } swiper.parallax.setTranslate(); }, setTranslate: function setTranslate(){ var swiper=this; if(!swiper.params.parallax){ return; } swiper.parallax.setTranslate(); }, setTransition: function setTransition(duration){ var swiper=this; if(!swiper.params.parallax){ return; } swiper.parallax.setTransition(duration); }, }, }; var Zoom={ getDistanceBetweenTouches: function getDistanceBetweenTouches(e){ if(e.targetTouches.length < 2){ return 1; } var x1=e.targetTouches[0].pageX; var y1=e.targetTouches[0].pageY; var x2=e.targetTouches[1].pageX; var y2=e.targetTouches[1].pageY; var distance=Math.sqrt((Math.pow((x2 - x1), 2)) + (Math.pow((y2 - y1), 2))); return distance; }, onGestureStart: function onGestureStart(e){ var swiper=this; var params=swiper.params.zoom; var zoom=swiper.zoom; var gesture=zoom.gesture; zoom.fakeGestureTouched=false; zoom.fakeGestureMoved=false; if(!Support.gestures){ if(e.type!=='touchstart'||(e.type==='touchstart'&&e.targetTouches.length < 2)){ return; } zoom.fakeGestureTouched=true; gesture.scaleStart=Zoom.getDistanceBetweenTouches(e); } if(!gesture.$slideEl||!gesture.$slideEl.length){ gesture.$slideEl=$(e.target).closest('.swiper-slide'); if(gesture.$slideEl.length===0){ gesture.$slideEl=swiper.slides.eq(swiper.activeIndex); } gesture.$imageEl=gesture.$slideEl.find('img, svg, canvas'); gesture.$imageWrapEl=gesture.$imageEl.parent(("." + (params.containerClass))); gesture.maxRatio=gesture.$imageWrapEl.attr('data-swiper-zoom')||params.maxRatio; if(gesture.$imageWrapEl.length===0){ gesture.$imageEl=undefined; return; }} gesture.$imageEl.transition(0); swiper.zoom.isScaling=true; }, onGestureChange: function onGestureChange(e){ var swiper=this; var params=swiper.params.zoom; var zoom=swiper.zoom; var gesture=zoom.gesture; if(!Support.gestures){ if(e.type!=='touchmove'||(e.type==='touchmove'&&e.targetTouches.length < 2)){ return; } zoom.fakeGestureMoved=true; gesture.scaleMove=Zoom.getDistanceBetweenTouches(e); } if(!gesture.$imageEl||gesture.$imageEl.length===0){ return; } if(Support.gestures){ swiper.zoom.scale=e.scale * zoom.currentScale; }else{ zoom.scale=(gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; } if(zoom.scale > gesture.maxRatio){ zoom.scale=(gesture.maxRatio - 1) + (Math.pow(((zoom.scale - gesture.maxRatio) + 1), 0.5)); } if(zoom.scale < params.minRatio){ zoom.scale=(params.minRatio + 1) - (Math.pow(((params.minRatio - zoom.scale) + 1), 0.5)); } gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); }, onGestureEnd: function onGestureEnd(e){ var swiper=this; var params=swiper.params.zoom; var zoom=swiper.zoom; var gesture=zoom.gesture; if(!Support.gestures){ if(!zoom.fakeGestureTouched||!zoom.fakeGestureMoved){ return; } if(e.type!=='touchend'||(e.type==='touchend'&&e.changedTouches.length < 2&&!Device.android)){ return; } zoom.fakeGestureTouched=false; zoom.fakeGestureMoved=false; } if(!gesture.$imageEl||gesture.$imageEl.length===0){ return; } zoom.scale=Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); zoom.currentScale=zoom.scale; zoom.isScaling=false; if(zoom.scale===1){ gesture.$slideEl=undefined; }}, onTouchStart: function onTouchStart(e){ var swiper=this; var zoom=swiper.zoom; var gesture=zoom.gesture; var image=zoom.image; if(!gesture.$imageEl||gesture.$imageEl.length===0){ return; } if(image.isTouched){ return; } if(Device.android){ e.preventDefault(); } image.isTouched=true; image.touchesStart.x=e.type==='touchstart' ? e.targetTouches[0].pageX:e.pageX; image.touchesStart.y=e.type==='touchstart' ? e.targetTouches[0].pageY:e.pageY; }, onTouchMove: function onTouchMove(e){ var swiper=this; var zoom=swiper.zoom; var gesture=zoom.gesture; var image=zoom.image; var velocity=zoom.velocity; if(!gesture.$imageEl||gesture.$imageEl.length===0){ return; } swiper.allowClick=false; if(!image.isTouched||!gesture.$slideEl){ return; } if(!image.isMoved){ image.width=gesture.$imageEl[0].offsetWidth; image.height=gesture.$imageEl[0].offsetHeight; image.startX=Utils.getTranslate(gesture.$imageWrapEl[0], 'x')||0; image.startY=Utils.getTranslate(gesture.$imageWrapEl[0], 'y')||0; gesture.slideWidth=gesture.$slideEl[0].offsetWidth; gesture.slideHeight=gesture.$slideEl[0].offsetHeight; gesture.$imageWrapEl.transition(0); if(swiper.rtl){ image.startX=-image.startX; image.startY=-image.startY; }} var scaledWidth=image.width * zoom.scale; var scaledHeight=image.height * zoom.scale; if(scaledWidth < gesture.slideWidth&&scaledHeight < gesture.slideHeight){ return; } image.minX=Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); image.maxX=-image.minX; image.minY=Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); image.maxY=-image.minY; image.touchesCurrent.x=e.type==='touchmove' ? e.targetTouches[0].pageX:e.pageX; image.touchesCurrent.y=e.type==='touchmove' ? e.targetTouches[0].pageY:e.pageY; if(!image.isMoved&&!zoom.isScaling){ if(swiper.isHorizontal() && ( (Math.floor(image.minX)===Math.floor(image.startX)&&image.touchesCurrent.x < image.touchesStart.x) || (Math.floor(image.maxX)===Math.floor(image.startX)&&image.touchesCurrent.x > image.touchesStart.x) ) ){ image.isTouched=false; return; } if(!swiper.isHorizontal() && ( (Math.floor(image.minY)===Math.floor(image.startY)&&image.touchesCurrent.y < image.touchesStart.y) || (Math.floor(image.maxY)===Math.floor(image.startY)&&image.touchesCurrent.y > image.touchesStart.y) ) ){ image.isTouched=false; return; }} e.preventDefault(); e.stopPropagation(); image.isMoved=true; image.currentX=(image.touchesCurrent.x - image.touchesStart.x) + image.startX; image.currentY=(image.touchesCurrent.y - image.touchesStart.y) + image.startY; if(image.currentX < image.minX){ image.currentX=(image.minX + 1) - (Math.pow(((image.minX - image.currentX) + 1), 0.8)); } if(image.currentX > image.maxX){ image.currentX=(image.maxX - 1) + (Math.pow(((image.currentX - image.maxX) + 1), 0.8)); } if(image.currentY < image.minY){ image.currentY=(image.minY + 1) - (Math.pow(((image.minY - image.currentY) + 1), 0.8)); } if(image.currentY > image.maxY){ image.currentY=(image.maxY - 1) + (Math.pow(((image.currentY - image.maxY) + 1), 0.8)); } if(!velocity.prevPositionX){ velocity.prevPositionX=image.touchesCurrent.x; } if(!velocity.prevPositionY){ velocity.prevPositionY=image.touchesCurrent.y; } if(!velocity.prevTime){ velocity.prevTime=Date.now(); } velocity.x=(image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; velocity.y=(image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; if(Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2){ velocity.x=0; } if(Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2){ velocity.y=0; } velocity.prevPositionX=image.touchesCurrent.x; velocity.prevPositionY=image.touchesCurrent.y; velocity.prevTime=Date.now(); gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); }, onTouchEnd: function onTouchEnd(){ var swiper=this; var zoom=swiper.zoom; var gesture=zoom.gesture; var image=zoom.image; var velocity=zoom.velocity; if(!gesture.$imageEl||gesture.$imageEl.length===0){ return; } if(!image.isTouched||!image.isMoved){ image.isTouched=false; image.isMoved=false; return; } image.isTouched=false; image.isMoved=false; var momentumDurationX=300; var momentumDurationY=300; var momentumDistanceX=velocity.x * momentumDurationX; var newPositionX=image.currentX + momentumDistanceX; var momentumDistanceY=velocity.y * momentumDurationY; var newPositionY=image.currentY + momentumDistanceY; if(velocity.x!==0){ momentumDurationX=Math.abs((newPositionX - image.currentX) / velocity.x); } if(velocity.y!==0){ momentumDurationY=Math.abs((newPositionY - image.currentY) / velocity.y); } var momentumDuration=Math.max(momentumDurationX, momentumDurationY); image.currentX=newPositionX; image.currentY=newPositionY; var scaledWidth=image.width * zoom.scale; var scaledHeight=image.height * zoom.scale; image.minX=Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); image.maxX=-image.minX; image.minY=Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); image.maxY=-image.minY; image.currentX=Math.max(Math.min(image.currentX, image.maxX), image.minX); image.currentY=Math.max(Math.min(image.currentY, image.maxY), image.minY); gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); }, onTransitionEnd: function onTransitionEnd(){ var swiper=this; var zoom=swiper.zoom; var gesture=zoom.gesture; if(gesture.$slideEl&&swiper.previousIndex!==swiper.activeIndex){ gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); gesture.$imageWrapEl.transform('translate3d(0,0,0)'); gesture.$slideEl=undefined; gesture.$imageEl=undefined; gesture.$imageWrapEl=undefined; zoom.scale=1; zoom.currentScale=1; }}, toggle: function toggle(e){ var swiper=this; var zoom=swiper.zoom; if(zoom.scale&&zoom.scale!==1){ zoom.out(); }else{ zoom.in(e); }}, in: function in$1(e){ var swiper=this; var zoom=swiper.zoom; var params=swiper.params.zoom; var gesture=zoom.gesture; var image=zoom.image; if(!gesture.$slideEl){ gesture.$slideEl=swiper.clickedSlide ? $(swiper.clickedSlide):swiper.slides.eq(swiper.activeIndex); gesture.$imageEl=gesture.$slideEl.find('img, svg, canvas'); gesture.$imageWrapEl=gesture.$imageEl.parent(("." + (params.containerClass))); } if(!gesture.$imageEl||gesture.$imageEl.length===0){ return; } gesture.$slideEl.addClass(("" + (params.zoomedSlideClass))); var touchX; var touchY; var offsetX; var offsetY; var diffX; var diffY; var translateX; var translateY; var imageWidth; var imageHeight; var scaledWidth; var scaledHeight; var translateMinX; var translateMinY; var translateMaxX; var translateMaxY; var slideWidth; var slideHeight; if(typeof image.touchesStart.x==='undefined'&&e){ touchX=e.type==='touchend' ? e.changedTouches[0].pageX:e.pageX; touchY=e.type==='touchend' ? e.changedTouches[0].pageY:e.pageY; }else{ touchX=image.touchesStart.x; touchY=image.touchesStart.y; } zoom.scale=gesture.$imageWrapEl.attr('data-swiper-zoom')||params.maxRatio; zoom.currentScale=gesture.$imageWrapEl.attr('data-swiper-zoom')||params.maxRatio; if(e){ slideWidth=gesture.$slideEl[0].offsetWidth; slideHeight=gesture.$slideEl[0].offsetHeight; offsetX=gesture.$slideEl.offset().left; offsetY=gesture.$slideEl.offset().top; diffX=(offsetX + (slideWidth / 2)) - touchX; diffY=(offsetY + (slideHeight / 2)) - touchY; imageWidth=gesture.$imageEl[0].offsetWidth; imageHeight=gesture.$imageEl[0].offsetHeight; scaledWidth=imageWidth * zoom.scale; scaledHeight=imageHeight * zoom.scale; translateMinX=Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); translateMinY=Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); translateMaxX=-translateMinX; translateMaxY=-translateMinY; translateX=diffX * zoom.scale; translateY=diffY * zoom.scale; if(translateX < translateMinX){ translateX=translateMinX; } if(translateX > translateMaxX){ translateX=translateMaxX; } if(translateY < translateMinY){ translateY=translateMinY; } if(translateY > translateMaxY){ translateY=translateMaxY; }}else{ translateX=0; translateY=0; } gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)")); gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); }, out: function out(){ var swiper=this; var zoom=swiper.zoom; var params=swiper.params.zoom; var gesture=zoom.gesture; if(!gesture.$slideEl){ gesture.$slideEl=swiper.clickedSlide ? $(swiper.clickedSlide):swiper.slides.eq(swiper.activeIndex); gesture.$imageEl=gesture.$slideEl.find('img, svg, canvas'); gesture.$imageWrapEl=gesture.$imageEl.parent(("." + (params.containerClass))); } if(!gesture.$imageEl||gesture.$imageEl.length===0){ return; } zoom.scale=1; zoom.currentScale=1; gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass))); gesture.$slideEl=undefined; }, enable: function enable(){ var swiper=this; var zoom=swiper.zoom; if(zoom.enabled){ return; } zoom.enabled=true; var passiveListener=swiper.touchEvents.start==='touchstart'&&Support.passiveListener&&swiper.params.passiveListeners ? { passive: true, capture: false }:false; if(Support.gestures){ swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); }else if(swiper.touchEvents.start==='touchstart'){ swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); } swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); }, disable: function disable(){ var swiper=this; var zoom=swiper.zoom; if(!zoom.enabled){ return; } swiper.zoom.enabled=false; var passiveListener=swiper.touchEvents.start==='touchstart'&&Support.passiveListener&&swiper.params.passiveListeners ? { passive: true, capture: false }:false; if(Support.gestures){ swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); }else if(swiper.touchEvents.start==='touchstart'){ swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); } swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); }, }; var Zoom$1={ name: 'zoom', params: { zoom: { enabled: false, maxRatio: 3, minRatio: 1, toggle: true, containerClass: 'swiper-zoom-container', zoomedSlideClass: 'swiper-slide-zoomed', }, }, create: function create(){ var swiper=this; var zoom={ enabled: false, scale: 1, currentScale: 1, isScaling: false, gesture: { $slideEl: undefined, slideWidth: undefined, slideHeight: undefined, $imageEl: undefined, $imageWrapEl: undefined, maxRatio: 3, }, image: { isTouched: undefined, isMoved: undefined, currentX: undefined, currentY: undefined, minX: undefined, minY: undefined, maxX: undefined, maxY: undefined, width: undefined, height: undefined, startX: undefined, startY: undefined, touchesStart: {}, touchesCurrent: {}, }, velocity: { x: undefined, y: undefined, prevPositionX: undefined, prevPositionY: undefined, prevTime: undefined, }, }; ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName){ zoom[methodName]=Zoom[methodName].bind(swiper); }); Utils.extend(swiper, { zoom: zoom, }); }, on: { init: function init(){ var swiper=this; if(swiper.params.zoom.enabled){ swiper.zoom.enable(); }}, destroy: function destroy(){ var swiper=this; swiper.zoom.disable(); }, touchStart: function touchStart(e){ var swiper=this; if(!swiper.zoom.enabled){ return; } swiper.zoom.onTouchStart(e); }, touchEnd: function touchEnd(e){ var swiper=this; if(!swiper.zoom.enabled){ return; } swiper.zoom.onTouchEnd(e); }, doubleTap: function doubleTap(e){ var swiper=this; if(swiper.params.zoom.enabled&&swiper.zoom.enabled&&swiper.params.zoom.toggle){ swiper.zoom.toggle(e); }}, transitionEnd: function transitionEnd(){ var swiper=this; if(swiper.zoom.enabled&&swiper.params.zoom.enabled){ swiper.zoom.onTransitionEnd(); }}, }, }; var Lazy={ loadInSlide: function loadInSlide(index, loadInDuplicate){ if(loadInDuplicate===void 0) loadInDuplicate=true; var swiper=this; var params=swiper.params.lazy; if(typeof index==='undefined'){ return; } if(swiper.slides.length===0){ return; } var isVirtual=swiper.virtual&&swiper.params.virtual.enabled; var $slideEl=isVirtual ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")) : swiper.slides.eq(index); var $images=$slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")")); if($slideEl.hasClass(params.elementClass)&&!$slideEl.hasClass(params.loadedClass)&&!$slideEl.hasClass(params.loadingClass)){ $images=$images.add($slideEl[0]); } if($images.length===0){ return; } $images.each(function (imageIndex, imageEl){ var $imageEl=$(imageEl); $imageEl.addClass(params.loadingClass); var background=$imageEl.attr('data-background'); var src=$imageEl.attr('data-src'); var srcset=$imageEl.attr('data-srcset'); var sizes=$imageEl.attr('data-sizes'); swiper.loadImage($imageEl[0], (src||background), srcset, sizes, false, function (){ if(typeof swiper==='undefined'||swiper===null||!swiper||(swiper&&!swiper.params)||swiper.destroyed){ return; } if(background){ $imageEl.css('background-image', ("url(\"" + background + "\")")); $imageEl.removeAttr('data-background'); }else{ if(srcset){ $imageEl.attr('srcset', srcset); $imageEl.removeAttr('data-srcset'); } if(sizes){ $imageEl.attr('sizes', sizes); $imageEl.removeAttr('data-sizes'); } if(src){ $imageEl.attr('src', src); $imageEl.removeAttr('data-src'); }} $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); $slideEl.find(("." + (params.preloaderClass))).remove(); if(swiper.params.loop&&loadInDuplicate){ var slideOriginalIndex=$slideEl.attr('data-swiper-slide-index'); if($slideEl.hasClass(swiper.params.slideDuplicateClass)){ var originalSlide=swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")")); swiper.lazy.loadInSlide(originalSlide.index(), false); }else{ var duplicatedSlide=swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]")); swiper.lazy.loadInSlide(duplicatedSlide.index(), false); }} swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); }); swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); }); }, load: function load(){ var swiper=this; var $wrapperEl=swiper.$wrapperEl; var swiperParams=swiper.params; var slides=swiper.slides; var activeIndex=swiper.activeIndex; var isVirtual=swiper.virtual&&swiperParams.virtual.enabled; var params=swiperParams.lazy; var slidesPerView=swiperParams.slidesPerView; if(slidesPerView==='auto'){ slidesPerView=0; } function slideExist(index){ if(isVirtual){ if($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length){ return true; }}else if(slides[index]){ return true; } return false; } function slideIndex(slideEl){ if(isVirtual){ return $(slideEl).attr('data-swiper-slide-index'); } return $(slideEl).index(); } if(!swiper.lazy.initialImageLoaded){ swiper.lazy.initialImageLoaded=true; } if(swiper.params.watchSlidesVisibility){ $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl){ var index=isVirtual ? $(slideEl).attr('data-swiper-slide-index'):$(slideEl).index(); swiper.lazy.loadInSlide(index); }); }else if(slidesPerView > 1){ for (var i=activeIndex; i < activeIndex + slidesPerView; i +=1){ if(slideExist(i)){ swiper.lazy.loadInSlide(i); }} }else{ swiper.lazy.loadInSlide(activeIndex); } if(params.loadPrevNext){ if(slidesPerView > 1||(params.loadPrevNextAmount&¶ms.loadPrevNextAmount > 1)){ var amount=params.loadPrevNextAmount; var spv=slidesPerView; var maxIndex=Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); var minIndex=Math.max(activeIndex - Math.max(spv, amount), 0); for (var i$1=activeIndex + slidesPerView; i$1 < maxIndex; i$1 +=1){ if(slideExist(i$1)){ swiper.lazy.loadInSlide(i$1); }} for (var i$2=minIndex; i$2 < activeIndex; i$2 +=1){ if(slideExist(i$2)){ swiper.lazy.loadInSlide(i$2); }} }else{ var nextSlide=$wrapperEl.children(("." + (swiperParams.slideNextClass))); if(nextSlide.length > 0){ swiper.lazy.loadInSlide(slideIndex(nextSlide)); } var prevSlide=$wrapperEl.children(("." + (swiperParams.slidePrevClass))); if(prevSlide.length > 0){ swiper.lazy.loadInSlide(slideIndex(prevSlide)); }} }}, }; var Lazy$1={ name: 'lazy', params: { lazy: { enabled: false, loadPrevNext: false, loadPrevNextAmount: 1, loadOnTransitionStart: false, elementClass: 'swiper-lazy', loadingClass: 'swiper-lazy-loading', loadedClass: 'swiper-lazy-loaded', preloaderClass: 'swiper-lazy-preloader', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { lazy: { initialImageLoaded: false, load: Lazy.load.bind(swiper), loadInSlide: Lazy.loadInSlide.bind(swiper), }, }); }, on: { beforeInit: function beforeInit(){ var swiper=this; if(swiper.params.lazy.enabled&&swiper.params.preloadImages){ swiper.params.preloadImages=false; }}, init: function init(){ var swiper=this; if(swiper.params.lazy.enabled&&!swiper.params.loop&&swiper.params.initialSlide===0){ swiper.lazy.load(); }}, scroll: function scroll(){ var swiper=this; if(swiper.params.freeMode&&!swiper.params.freeModeSticky){ swiper.lazy.load(); }}, resize: function resize(){ var swiper=this; if(swiper.params.lazy.enabled){ swiper.lazy.load(); }}, scrollbarDragMove: function scrollbarDragMove(){ var swiper=this; if(swiper.params.lazy.enabled){ swiper.lazy.load(); }}, transitionStart: function transitionStart(){ var swiper=this; if(swiper.params.lazy.enabled){ if(swiper.params.lazy.loadOnTransitionStart||(!swiper.params.lazy.loadOnTransitionStart&&!swiper.lazy.initialImageLoaded)){ swiper.lazy.load(); }} }, transitionEnd: function transitionEnd(){ var swiper=this; if(swiper.params.lazy.enabled&&!swiper.params.lazy.loadOnTransitionStart){ swiper.lazy.load(); }}, }, }; var Controller={ LinearSpline: function LinearSpline(x, y){ var binarySearch=(function search(){ var maxIndex; var minIndex; var guess; return function (array, val){ minIndex=-1; maxIndex=array.length; while (maxIndex - minIndex > 1){ guess=maxIndex + minIndex >> 1; if(array[guess] <=val){ minIndex=guess; }else{ maxIndex=guess; }} return maxIndex; };}()); this.x=x; this.y=y; this.lastIndex=x.length - 1; var i1; var i3; this.interpolate=function interpolate(x2){ if(!x2){ return 0; } i3=binarySearch(this.x, x2); i1=i3 - 1; return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; }; return this; }, getInterpolateFunction: function getInterpolateFunction(c){ var swiper=this; if(!swiper.controller.spline){ swiper.controller.spline=swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); }}, setTranslate: function setTranslate(setTranslate$1, byController){ var swiper=this; var controlled=swiper.controller.control; var multiplier; var controlledTranslate; function setControlledTranslate(c){ var translate=swiper.rtlTranslate ? -swiper.translate:swiper.translate; if(swiper.params.controller.by==='slide'){ swiper.controller.getInterpolateFunction(c); controlledTranslate=-swiper.controller.spline.interpolate(-translate); } if(!controlledTranslate||swiper.params.controller.by==='container'){ multiplier=(c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); controlledTranslate=((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); } if(swiper.params.controller.inverse){ controlledTranslate=c.maxTranslate() - controlledTranslate; } c.updateProgress(controlledTranslate); c.setTranslate(controlledTranslate, swiper); c.updateActiveIndex(); c.updateSlidesClasses(); } if(Array.isArray(controlled)){ for (var i=0; i < controlled.length; i +=1){ if(controlled[i]!==byController&&controlled[i] instanceof Swiper){ setControlledTranslate(controlled[i]); }} }else if(controlled instanceof Swiper&&byController!==controlled){ setControlledTranslate(controlled); }}, setTransition: function setTransition(duration, byController){ var swiper=this; var controlled=swiper.controller.control; var i; function setControlledTransition(c){ c.setTransition(duration, swiper); if(duration!==0){ c.transitionStart(); if(c.params.autoHeight){ Utils.nextTick(function (){ c.updateAutoHeight(); }); } c.$wrapperEl.transitionEnd(function (){ if(!controlled){ return; } if(c.params.loop&&swiper.params.controller.by==='slide'){ c.loopFix(); } c.transitionEnd(); }); }} if(Array.isArray(controlled)){ for (i=0; i < controlled.length; i +=1){ if(controlled[i]!==byController&&controlled[i] instanceof Swiper){ setControlledTransition(controlled[i]); }} }else if(controlled instanceof Swiper&&byController!==controlled){ setControlledTransition(controlled); }}, }; var Controller$1={ name: 'controller', params: { controller: { control: undefined, inverse: false, by: 'slide', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { controller: { control: swiper.params.controller.control, getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), setTranslate: Controller.setTranslate.bind(swiper), setTransition: Controller.setTransition.bind(swiper), }, }); }, on: { update: function update(){ var swiper=this; if(!swiper.controller.control){ return; } if(swiper.controller.spline){ swiper.controller.spline=undefined; delete swiper.controller.spline; }}, resize: function resize(){ var swiper=this; if(!swiper.controller.control){ return; } if(swiper.controller.spline){ swiper.controller.spline=undefined; delete swiper.controller.spline; }}, observerUpdate: function observerUpdate(){ var swiper=this; if(!swiper.controller.control){ return; } if(swiper.controller.spline){ swiper.controller.spline=undefined; delete swiper.controller.spline; }}, setTranslate: function setTranslate(translate, byController){ var swiper=this; if(!swiper.controller.control){ return; } swiper.controller.setTranslate(translate, byController); }, setTransition: function setTransition(duration, byController){ var swiper=this; if(!swiper.controller.control){ return; } swiper.controller.setTransition(duration, byController); }, }, }; var a11y={ makeElFocusable: function makeElFocusable($el){ $el.attr('tabIndex', '0'); return $el; }, addElRole: function addElRole($el, role){ $el.attr('role', role); return $el; }, addElLabel: function addElLabel($el, label){ $el.attr('aria-label', label); return $el; }, disableEl: function disableEl($el){ $el.attr('aria-disabled', true); return $el; }, enableEl: function enableEl($el){ $el.attr('aria-disabled', false); return $el; }, onEnterKey: function onEnterKey(e){ var swiper=this; var params=swiper.params.a11y; if(e.keyCode!==13){ return; } var $targetEl=$(e.target); if(swiper.navigation&&swiper.navigation.$nextEl&&$targetEl.is(swiper.navigation.$nextEl)){ if(!(swiper.isEnd&&!swiper.params.loop)){ swiper.slideNext(); } if(swiper.isEnd){ swiper.a11y.notify(params.lastSlideMessage); }else{ swiper.a11y.notify(params.nextSlideMessage); }} if(swiper.navigation&&swiper.navigation.$prevEl&&$targetEl.is(swiper.navigation.$prevEl)){ if(!(swiper.isBeginning&&!swiper.params.loop)){ swiper.slidePrev(); } if(swiper.isBeginning){ swiper.a11y.notify(params.firstSlideMessage); }else{ swiper.a11y.notify(params.prevSlideMessage); }} if(swiper.pagination&&$targetEl.is(("." + (swiper.params.pagination.bulletClass)))){ $targetEl[0].click(); }}, notify: function notify(message){ var swiper=this; var notification=swiper.a11y.liveRegion; if(notification.length===0){ return; } notification.html(''); notification.html(message); }, updateNavigation: function updateNavigation(){ var swiper=this; if(swiper.params.loop){ return; } var ref=swiper.navigation; var $nextEl=ref.$nextEl; var $prevEl=ref.$prevEl; if($prevEl&&$prevEl.length > 0){ if(swiper.isBeginning){ swiper.a11y.disableEl($prevEl); }else{ swiper.a11y.enableEl($prevEl); }} if($nextEl&&$nextEl.length > 0){ if(swiper.isEnd){ swiper.a11y.disableEl($nextEl); }else{ swiper.a11y.enableEl($nextEl); }} }, updatePagination: function updatePagination(){ var swiper=this; var params=swiper.params.a11y; if(swiper.pagination&&swiper.params.pagination.clickable&&swiper.pagination.bullets&&swiper.pagination.bullets.length){ swiper.pagination.bullets.each(function (bulletIndex, bulletEl){ var $bulletEl=$(bulletEl); swiper.a11y.makeElFocusable($bulletEl); swiper.a11y.addElRole($bulletEl, 'button'); swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1)); }); }}, init: function init(){ var swiper=this; swiper.$el.append(swiper.a11y.liveRegion); var params=swiper.params.a11y; var $nextEl; var $prevEl; if(swiper.navigation&&swiper.navigation.$nextEl){ $nextEl=swiper.navigation.$nextEl; } if(swiper.navigation&&swiper.navigation.$prevEl){ $prevEl=swiper.navigation.$prevEl; } if($nextEl){ swiper.a11y.makeElFocusable($nextEl); swiper.a11y.addElRole($nextEl, 'button'); swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); $nextEl.on('keydown', swiper.a11y.onEnterKey); } if($prevEl){ swiper.a11y.makeElFocusable($prevEl); swiper.a11y.addElRole($prevEl, 'button'); swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); $prevEl.on('keydown', swiper.a11y.onEnterKey); } if(swiper.pagination&&swiper.params.pagination.clickable&&swiper.pagination.bullets&&swiper.pagination.bullets.length){ swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); }}, destroy: function destroy(){ var swiper=this; if(swiper.a11y.liveRegion&&swiper.a11y.liveRegion.length > 0){ swiper.a11y.liveRegion.remove(); } var $nextEl; var $prevEl; if(swiper.navigation&&swiper.navigation.$nextEl){ $nextEl=swiper.navigation.$nextEl; } if(swiper.navigation&&swiper.navigation.$prevEl){ $prevEl=swiper.navigation.$prevEl; } if($nextEl){ $nextEl.off('keydown', swiper.a11y.onEnterKey); } if($prevEl){ $prevEl.off('keydown', swiper.a11y.onEnterKey); } if(swiper.pagination&&swiper.params.pagination.clickable&&swiper.pagination.bullets&&swiper.pagination.bullets.length){ swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); }}, }; var A11y={ name: 'a11y', params: { a11y: { enabled: true, notificationClass: 'swiper-notification', prevSlideMessage: 'Previous slide', nextSlideMessage: 'Next slide', firstSlideMessage: 'This is the first slide', lastSlideMessage: 'This is the last slide', paginationBulletMessage: 'Go to slide {{index}}', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { a11y: { liveRegion: $(("")), }, }); Object.keys(a11y).forEach(function (methodName){ swiper.a11y[methodName]=a11y[methodName].bind(swiper); }); }, on: { init: function init(){ var swiper=this; if(!swiper.params.a11y.enabled){ return; } swiper.a11y.init(); swiper.a11y.updateNavigation(); }, toEdge: function toEdge(){ var swiper=this; if(!swiper.params.a11y.enabled){ return; } swiper.a11y.updateNavigation(); }, fromEdge: function fromEdge(){ var swiper=this; if(!swiper.params.a11y.enabled){ return; } swiper.a11y.updateNavigation(); }, paginationUpdate: function paginationUpdate(){ var swiper=this; if(!swiper.params.a11y.enabled){ return; } swiper.a11y.updatePagination(); }, destroy: function destroy(){ var swiper=this; if(!swiper.params.a11y.enabled){ return; } swiper.a11y.destroy(); }, }, }; var History={ init: function init(){ var swiper=this; if(!swiper.params.history){ return; } if(!win.history||!win.history.pushState){ swiper.params.history.enabled=false; swiper.params.hashNavigation.enabled=true; return; } var history=swiper.history; history.initialized=true; history.paths=History.getPathValues(); if(!history.paths.key&&!history.paths.value){ return; } history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); if(!swiper.params.history.replaceState){ win.addEventListener('popstate', swiper.history.setHistoryPopState); }}, destroy: function destroy(){ var swiper=this; if(!swiper.params.history.replaceState){ win.removeEventListener('popstate', swiper.history.setHistoryPopState); }}, setHistoryPopState: function setHistoryPopState(){ var swiper=this; swiper.history.paths=History.getPathValues(); swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); }, getPathValues: function getPathValues(){ var pathArray=win.location.pathname.slice(1).split('/').filter(function (part){ return part!==''; }); var total=pathArray.length; var key=pathArray[total - 2]; var value=pathArray[total - 1]; return { key: key, value: value };}, setHistory: function setHistory(key, index){ var swiper=this; if(!swiper.history.initialized||!swiper.params.history.enabled){ return; } var slide=swiper.slides.eq(index); var value=History.slugify(slide.attr('data-history')); if(!win.location.pathname.includes(key)){ value=key + "/" + value; } var currentState=win.history.state; if(currentState&¤tState.value===value){ return; } if(swiper.params.history.replaceState){ win.history.replaceState({ value: value }, null, value); }else{ win.history.pushState({ value: value }, null, value); }}, slugify: function slugify(text){ return text.toString().toLowerCase() .replace(/\s+/g, '-') .replace(/[^\w-]+/g, '') .replace(/--+/g, '-') .replace(/^-+/, '') .replace(/-+$/, ''); }, scrollToSlide: function scrollToSlide(speed, value, runCallbacks){ var swiper=this; if(value){ for (var i=0, length=swiper.slides.length; i < length; i +=1){ var slide=swiper.slides.eq(i); var slideHistory=History.slugify(slide.attr('data-history')); if(slideHistory===value&&!slide.hasClass(swiper.params.slideDuplicateClass)){ var index=slide.index(); swiper.slideTo(index, speed, runCallbacks); }} }else{ swiper.slideTo(0, speed, runCallbacks); }}, }; var History$1={ name: 'history', params: { history: { enabled: false, replaceState: false, key: 'slides', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { history: { init: History.init.bind(swiper), setHistory: History.setHistory.bind(swiper), setHistoryPopState: History.setHistoryPopState.bind(swiper), scrollToSlide: History.scrollToSlide.bind(swiper), destroy: History.destroy.bind(swiper), }, }); }, on: { init: function init(){ var swiper=this; if(swiper.params.history.enabled){ swiper.history.init(); }}, destroy: function destroy(){ var swiper=this; if(swiper.params.history.enabled){ swiper.history.destroy(); }}, transitionEnd: function transitionEnd(){ var swiper=this; if(swiper.history.initialized){ swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); }}, }, }; var HashNavigation={ onHashCange: function onHashCange(){ var swiper=this; var newHash=doc.location.hash.replace('#', ''); var activeSlideHash=swiper.slides.eq(swiper.activeIndex).attr('data-hash'); if(newHash!==activeSlideHash){ var newIndex=swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index(); if(typeof newIndex==='undefined'){ return; } swiper.slideTo(newIndex); }}, setHash: function setHash(){ var swiper=this; if(!swiper.hashNavigation.initialized||!swiper.params.hashNavigation.enabled){ return; } if(swiper.params.hashNavigation.replaceState&&win.history&&win.history.replaceState){ win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash')))||'')); }else{ var slide=swiper.slides.eq(swiper.activeIndex); var hash=slide.attr('data-hash')||slide.attr('data-history'); doc.location.hash=hash||''; }}, init: function init(){ var swiper=this; if(!swiper.params.hashNavigation.enabled||(swiper.params.history&&swiper.params.history.enabled)){ return; } swiper.hashNavigation.initialized=true; var hash=doc.location.hash.replace('#', ''); if(hash){ var speed=0; for (var i=0, length=swiper.slides.length; i < length; i +=1){ var slide=swiper.slides.eq(i); var slideHash=slide.attr('data-hash')||slide.attr('data-history'); if(slideHash===hash&&!slide.hasClass(swiper.params.slideDuplicateClass)){ var index=slide.index(); swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); }} } if(swiper.params.hashNavigation.watchState){ $(win).on('hashchange', swiper.hashNavigation.onHashCange); }}, destroy: function destroy(){ var swiper=this; if(swiper.params.hashNavigation.watchState){ $(win).off('hashchange', swiper.hashNavigation.onHashCange); }}, }; var HashNavigation$1={ name: 'hash-navigation', params: { hashNavigation: { enabled: false, replaceState: false, watchState: false, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { hashNavigation: { initialized: false, init: HashNavigation.init.bind(swiper), destroy: HashNavigation.destroy.bind(swiper), setHash: HashNavigation.setHash.bind(swiper), onHashCange: HashNavigation.onHashCange.bind(swiper), }, }); }, on: { init: function init(){ var swiper=this; if(swiper.params.hashNavigation.enabled){ swiper.hashNavigation.init(); }}, destroy: function destroy(){ var swiper=this; if(swiper.params.hashNavigation.enabled){ swiper.hashNavigation.destroy(); }}, transitionEnd: function transitionEnd(){ var swiper=this; if(swiper.hashNavigation.initialized){ swiper.hashNavigation.setHash(); }}, }, }; var Autoplay={ run: function run(){ var swiper=this; var $activeSlideEl=swiper.slides.eq(swiper.activeIndex); var delay=swiper.params.autoplay.delay; if($activeSlideEl.attr('data-swiper-autoplay')){ delay=$activeSlideEl.attr('data-swiper-autoplay')||swiper.params.autoplay.delay; } swiper.autoplay.timeout=Utils.nextTick(function (){ if(swiper.params.autoplay.reverseDirection){ if(swiper.params.loop){ swiper.loopFix(); swiper.slidePrev(swiper.params.speed, true, true); swiper.emit('autoplay'); }else if(!swiper.isBeginning){ swiper.slidePrev(swiper.params.speed, true, true); swiper.emit('autoplay'); }else if(!swiper.params.autoplay.stopOnLastSlide){ swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); swiper.emit('autoplay'); }else{ swiper.autoplay.stop(); }}else if(swiper.params.loop){ swiper.loopFix(); swiper.slideNext(swiper.params.speed, true, true); swiper.emit('autoplay'); }else if(!swiper.isEnd){ swiper.slideNext(swiper.params.speed, true, true); swiper.emit('autoplay'); }else if(!swiper.params.autoplay.stopOnLastSlide){ swiper.slideTo(0, swiper.params.speed, true, true); swiper.emit('autoplay'); }else{ swiper.autoplay.stop(); }}, delay); }, start: function start(){ var swiper=this; if(typeof swiper.autoplay.timeout!=='undefined'){ return false; } if(swiper.autoplay.running){ return false; } swiper.autoplay.running=true; swiper.emit('autoplayStart'); swiper.autoplay.run(); return true; }, stop: function stop(){ var swiper=this; if(!swiper.autoplay.running){ return false; } if(typeof swiper.autoplay.timeout==='undefined'){ return false; } if(swiper.autoplay.timeout){ clearTimeout(swiper.autoplay.timeout); swiper.autoplay.timeout=undefined; } swiper.autoplay.running=false; swiper.emit('autoplayStop'); return true; }, pause: function pause(speed){ var swiper=this; if(!swiper.autoplay.running){ return; } if(swiper.autoplay.paused){ return; } if(swiper.autoplay.timeout){ clearTimeout(swiper.autoplay.timeout); } swiper.autoplay.paused=true; if(speed===0||!swiper.params.autoplay.waitForTransition){ swiper.autoplay.paused=false; swiper.autoplay.run(); }else{ swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); }}, }; var Autoplay$1={ name: 'autoplay', params: { autoplay: { enabled: false, delay: 3000, waitForTransition: true, disableOnInteraction: true, stopOnLastSlide: false, reverseDirection: false, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { autoplay: { running: false, paused: false, run: Autoplay.run.bind(swiper), start: Autoplay.start.bind(swiper), stop: Autoplay.stop.bind(swiper), pause: Autoplay.pause.bind(swiper), onTransitionEnd: function onTransitionEnd(e){ if(!swiper||swiper.destroyed||!swiper.$wrapperEl){ return; } if(e.target!==this){ return; } swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); swiper.autoplay.paused=false; if(!swiper.autoplay.running){ swiper.autoplay.stop(); }else{ swiper.autoplay.run(); }}, }, }); }, on: { init: function init(){ var swiper=this; if(swiper.params.autoplay.enabled){ swiper.autoplay.start(); }}, beforeTransitionStart: function beforeTransitionStart(speed, internal){ var swiper=this; if(swiper.autoplay.running){ if(internal||!swiper.params.autoplay.disableOnInteraction){ swiper.autoplay.pause(speed); }else{ swiper.autoplay.stop(); }} }, sliderFirstMove: function sliderFirstMove(){ var swiper=this; if(swiper.autoplay.running){ if(swiper.params.autoplay.disableOnInteraction){ swiper.autoplay.stop(); }else{ swiper.autoplay.pause(); }} }, destroy: function destroy(){ var swiper=this; if(swiper.autoplay.running){ swiper.autoplay.stop(); }}, }, }; var Fade={ setTranslate: function setTranslate(){ var swiper=this; var slides=swiper.slides; for (var i=0; i < slides.length; i +=1){ var $slideEl=swiper.slides.eq(i); var offset=$slideEl[0].swiperSlideOffset; var tx=-offset; if(!swiper.params.virtualTranslate){ tx -=swiper.translate; } var ty=0; if(!swiper.isHorizontal()){ ty=tx; tx=0; } var slideOpacity=swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); $slideEl .css({ opacity: slideOpacity, }) .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)")); }}, setTransition: function setTransition(duration){ var swiper=this; var slides=swiper.slides; var $wrapperEl=swiper.$wrapperEl; slides.transition(duration); if(swiper.params.virtualTranslate&&duration!==0){ var eventTriggered=false; slides.transitionEnd(function (){ if(eventTriggered){ return; } if(!swiper||swiper.destroyed){ return; } eventTriggered=true; swiper.animating=false; var triggerEvents=['webkitTransitionEnd', 'transitionend']; for (var i=0; i < triggerEvents.length; i +=1){ $wrapperEl.trigger(triggerEvents[i]); }}); }}, }; var EffectFade={ name: 'effect-fade', params: { fadeEffect: { crossFade: false, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { fadeEffect: { setTranslate: Fade.setTranslate.bind(swiper), setTransition: Fade.setTransition.bind(swiper), }, }); }, on: { beforeInit: function beforeInit(){ var swiper=this; if(swiper.params.effect!=='fade'){ return; } swiper.classNames.push(((swiper.params.containerModifierClass) + "fade")); var overwriteParams={ slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: true, spaceBetween: 0, virtualTranslate: true, }; Utils.extend(swiper.params, overwriteParams); Utils.extend(swiper.originalParams, overwriteParams); }, setTranslate: function setTranslate(){ var swiper=this; if(swiper.params.effect!=='fade'){ return; } swiper.fadeEffect.setTranslate(); }, setTransition: function setTransition(duration){ var swiper=this; if(swiper.params.effect!=='fade'){ return; } swiper.fadeEffect.setTransition(duration); }, }, }; var Cube={ setTranslate: function setTranslate(){ var swiper=this; var $el=swiper.$el; var $wrapperEl=swiper.$wrapperEl; var slides=swiper.slides; var swiperWidth=swiper.width; var swiperHeight=swiper.height; var rtl=swiper.rtlTranslate; var swiperSize=swiper.size; var params=swiper.params.cubeEffect; var isHorizontal=swiper.isHorizontal(); var isVirtual=swiper.virtual&&swiper.params.virtual.enabled; var wrapperRotate=0; var $cubeShadowEl; if(params.shadow){ if(isHorizontal){ $cubeShadowEl=$wrapperEl.find('.swiper-cube-shadow'); if($cubeShadowEl.length===0){ $cubeShadowEl=$('
'); $wrapperEl.append($cubeShadowEl); } $cubeShadowEl.css({ height: (swiperWidth + "px") }); }else{ $cubeShadowEl=$el.find('.swiper-cube-shadow'); if($cubeShadowEl.length===0){ $cubeShadowEl=$('
'); $el.append($cubeShadowEl); }} } for (var i=0; i < slides.length; i +=1){ var $slideEl=slides.eq(i); var slideIndex=i; if(isVirtual){ slideIndex=parseInt($slideEl.attr('data-swiper-slide-index'), 10); } var slideAngle=slideIndex * 90; var round=Math.floor(slideAngle / 360); if(rtl){ slideAngle=-slideAngle; round=Math.floor(-slideAngle / 360); } var progress=Math.max(Math.min($slideEl[0].progress, 1), -1); var tx=0; var ty=0; var tz=0; if(slideIndex % 4===0){ tx=-round * 4 * swiperSize; tz=0; }else if((slideIndex - 1) % 4===0){ tx=0; tz=-round * 4 * swiperSize; }else if((slideIndex - 2) % 4===0){ tx=swiperSize + (round * 4 * swiperSize); tz=swiperSize; }else if((slideIndex - 3) % 4===0){ tx=-swiperSize; tz=(3 * swiperSize) + (swiperSize * 4 * round); } if(rtl){ tx=-tx; } if(!isHorizontal){ ty=tx; tx=0; } var transform="rotateX(" + (isHorizontal ? 0:-slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle:0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)"; if(progress <=1&&progress > -1){ wrapperRotate=(slideIndex * 90) + (progress * 90); if(rtl){ wrapperRotate=(-slideIndex * 90) - (progress * 90); }} $slideEl.transform(transform); if(params.slideShadows){ var shadowBefore=isHorizontal ? $slideEl.find('.swiper-slide-shadow-left'):$slideEl.find('.swiper-slide-shadow-top'); var shadowAfter=isHorizontal ? $slideEl.find('.swiper-slide-shadow-right'):$slideEl.find('.swiper-slide-shadow-bottom'); if(shadowBefore.length===0){ shadowBefore=$(("
")); $slideEl.append(shadowBefore); } if(shadowAfter.length===0){ shadowAfter=$(("
")); $slideEl.append(shadowAfter); } if(shadowBefore.length){ shadowBefore[0].style.opacity=Math.max(-progress, 0); } if(shadowAfter.length){ shadowAfter[0].style.opacity=Math.max(progress, 0); }} } $wrapperEl.css({ '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), }); if(params.shadow){ if(isHorizontal){ $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")")); }else{ var shadowAngle=Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); var multiplier=1.5 - ( (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) ); var scale1=params.shadowScale; var scale2=params.shadowScale / multiplier; var offset=params.shadowOffset; $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)")); }} var zFactor=(Browser.isSafari||Browser.isUiWebView) ? (-swiperSize / 2):0; $wrapperEl .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0:wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate:0) + "deg)")); }, setTransition: function setTransition(duration){ var swiper=this; var $el=swiper.$el; var slides=swiper.slides; slides .transition(duration) .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') .transition(duration); if(swiper.params.cubeEffect.shadow&&!swiper.isHorizontal()){ $el.find('.swiper-cube-shadow').transition(duration); }}, }; var EffectCube={ name: 'effect-cube', params: { cubeEffect: { slideShadows: true, shadow: true, shadowOffset: 20, shadowScale: 0.94, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { cubeEffect: { setTranslate: Cube.setTranslate.bind(swiper), setTransition: Cube.setTransition.bind(swiper), }, }); }, on: { beforeInit: function beforeInit(){ var swiper=this; if(swiper.params.effect!=='cube'){ return; } swiper.classNames.push(((swiper.params.containerModifierClass) + "cube")); swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); var overwriteParams={ slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: true, resistanceRatio: 0, spaceBetween: 0, centeredSlides: false, virtualTranslate: true, }; Utils.extend(swiper.params, overwriteParams); Utils.extend(swiper.originalParams, overwriteParams); }, setTranslate: function setTranslate(){ var swiper=this; if(swiper.params.effect!=='cube'){ return; } swiper.cubeEffect.setTranslate(); }, setTransition: function setTransition(duration){ var swiper=this; if(swiper.params.effect!=='cube'){ return; } swiper.cubeEffect.setTransition(duration); }, }, }; var Flip={ setTranslate: function setTranslate(){ var swiper=this; var slides=swiper.slides; var rtl=swiper.rtlTranslate; for (var i=0; i < slides.length; i +=1){ var $slideEl=slides.eq(i); var progress=$slideEl[0].progress; if(swiper.params.flipEffect.limitRotation){ progress=Math.max(Math.min($slideEl[0].progress, 1), -1); } var offset=$slideEl[0].swiperSlideOffset; var rotate=-180 * progress; var rotateY=rotate; var rotateX=0; var tx=-offset; var ty=0; if(!swiper.isHorizontal()){ ty=tx; tx=0; rotateX=-rotateY; rotateY=0; }else if(rtl){ rotateY=-rotateY; } $slideEl[0].style.zIndex=-Math.abs(Math.round(progress)) + slides.length; if(swiper.params.flipEffect.slideShadows){ var shadowBefore=swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left'):$slideEl.find('.swiper-slide-shadow-top'); var shadowAfter=swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right'):$slideEl.find('.swiper-slide-shadow-bottom'); if(shadowBefore.length===0){ shadowBefore=$(("
")); $slideEl.append(shadowBefore); } if(shadowAfter.length===0){ shadowAfter=$(("
")); $slideEl.append(shadowAfter); } if(shadowBefore.length){ shadowBefore[0].style.opacity=Math.max(-progress, 0); } if(shadowAfter.length){ shadowAfter[0].style.opacity=Math.max(progress, 0); }} $slideEl .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)")); }}, setTransition: function setTransition(duration){ var swiper=this; var slides=swiper.slides; var activeIndex=swiper.activeIndex; var $wrapperEl=swiper.$wrapperEl; slides .transition(duration) .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') .transition(duration); if(swiper.params.virtualTranslate&&duration!==0){ var eventTriggered=false; slides.eq(activeIndex).transitionEnd(function onTransitionEnd(){ if(eventTriggered){ return; } if(!swiper||swiper.destroyed){ return; } eventTriggered=true; swiper.animating=false; var triggerEvents=['webkitTransitionEnd', 'transitionend']; for (var i=0; i < triggerEvents.length; i +=1){ $wrapperEl.trigger(triggerEvents[i]); }}); }}, }; var EffectFlip={ name: 'effect-flip', params: { flipEffect: { slideShadows: true, limitRotation: true, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { flipEffect: { setTranslate: Flip.setTranslate.bind(swiper), setTransition: Flip.setTransition.bind(swiper), }, }); }, on: { beforeInit: function beforeInit(){ var swiper=this; if(swiper.params.effect!=='flip'){ return; } swiper.classNames.push(((swiper.params.containerModifierClass) + "flip")); swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); var overwriteParams={ slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: true, spaceBetween: 0, virtualTranslate: true, }; Utils.extend(swiper.params, overwriteParams); Utils.extend(swiper.originalParams, overwriteParams); }, setTranslate: function setTranslate(){ var swiper=this; if(swiper.params.effect!=='flip'){ return; } swiper.flipEffect.setTranslate(); }, setTransition: function setTransition(duration){ var swiper=this; if(swiper.params.effect!=='flip'){ return; } swiper.flipEffect.setTransition(duration); }, }, }; var Coverflow={ setTranslate: function setTranslate(){ var swiper=this; var swiperWidth=swiper.width; var swiperHeight=swiper.height; var slides=swiper.slides; var $wrapperEl=swiper.$wrapperEl; var slidesSizesGrid=swiper.slidesSizesGrid; var params=swiper.params.coverflowEffect; var isHorizontal=swiper.isHorizontal(); var transform=swiper.translate; var center=isHorizontal ? -transform + (swiperWidth / 2):-transform + (swiperHeight / 2); var rotate=isHorizontal ? params.rotate:-params.rotate; var translate=params.depth; for (var i=0, length=slides.length; i < length; i +=1){ var $slideEl=slides.eq(i); var slideSize=slidesSizesGrid[i]; var slideOffset=$slideEl[0].swiperSlideOffset; var offsetMultiplier=((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; var rotateY=isHorizontal ? rotate * offsetMultiplier:0; var rotateX=isHorizontal ? 0:rotate * offsetMultiplier; var translateZ=-translate * Math.abs(offsetMultiplier); var translateY=isHorizontal ? 0:params.stretch * (offsetMultiplier); var translateX=isHorizontal ? params.stretch * (offsetMultiplier):0; if(Math.abs(translateX) < 0.001){ translateX=0; } if(Math.abs(translateY) < 0.001){ translateY=0; } if(Math.abs(translateZ) < 0.001){ translateZ=0; } if(Math.abs(rotateY) < 0.001){ rotateY=0; } if(Math.abs(rotateX) < 0.001){ rotateX=0; } var slideTransform="translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"; $slideEl.transform(slideTransform); $slideEl[0].style.zIndex=-Math.abs(Math.round(offsetMultiplier)) + 1; if(params.slideShadows){ var $shadowBeforeEl=isHorizontal ? $slideEl.find('.swiper-slide-shadow-left'):$slideEl.find('.swiper-slide-shadow-top'); var $shadowAfterEl=isHorizontal ? $slideEl.find('.swiper-slide-shadow-right'):$slideEl.find('.swiper-slide-shadow-bottom'); if($shadowBeforeEl.length===0){ $shadowBeforeEl=$(("
")); $slideEl.append($shadowBeforeEl); } if($shadowAfterEl.length===0){ $shadowAfterEl=$(("
")); $slideEl.append($shadowAfterEl); } if($shadowBeforeEl.length){ $shadowBeforeEl[0].style.opacity=offsetMultiplier > 0 ? offsetMultiplier:0; } if($shadowAfterEl.length){ $shadowAfterEl[0].style.opacity=(-offsetMultiplier) > 0 ? -offsetMultiplier:0; }} } if(Support.pointerEvents||Support.prefixedPointerEvents){ var ws=$wrapperEl[0].style; ws.perspectiveOrigin=center + "px 50%"; }}, setTransition: function setTransition(duration){ var swiper=this; swiper.slides .transition(duration) .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') .transition(duration); }, }; var EffectCoverflow={ name: 'effect-coverflow', params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: true, }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { coverflowEffect: { setTranslate: Coverflow.setTranslate.bind(swiper), setTransition: Coverflow.setTransition.bind(swiper), }, }); }, on: { beforeInit: function beforeInit(){ var swiper=this; if(swiper.params.effect!=='coverflow'){ return; } swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow")); swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); swiper.params.watchSlidesProgress=true; swiper.originalParams.watchSlidesProgress=true; }, setTranslate: function setTranslate(){ var swiper=this; if(swiper.params.effect!=='coverflow'){ return; } swiper.coverflowEffect.setTranslate(); }, setTransition: function setTransition(duration){ var swiper=this; if(swiper.params.effect!=='coverflow'){ return; } swiper.coverflowEffect.setTransition(duration); }, }, }; var Thumbs={ init: function init(){ var swiper=this; var ref=swiper.params; var thumbsParams=ref.thumbs; var SwiperClass=swiper.constructor; if(thumbsParams.swiper instanceof SwiperClass){ swiper.thumbs.swiper=thumbsParams.swiper; Utils.extend(swiper.thumbs.swiper.originalParams, { watchSlidesProgress: true, slideToClickedSlide: false, }); Utils.extend(swiper.thumbs.swiper.params, { watchSlidesProgress: true, slideToClickedSlide: false, }); }else if(Utils.isObject(thumbsParams.swiper)){ swiper.thumbs.swiper=new SwiperClass(Utils.extend({}, thumbsParams.swiper, { watchSlidesVisibility: true, watchSlidesProgress: true, slideToClickedSlide: false, })); swiper.thumbs.swiperCreated=true; } swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); }, onThumbClick: function onThumbClick(){ var swiper=this; var thumbsSwiper=swiper.thumbs.swiper; if(!thumbsSwiper){ return; } var clickedIndex=thumbsSwiper.clickedIndex; if(typeof clickedIndex==='undefined'||clickedIndex===null){ return; } var slideToIndex; if(thumbsSwiper.params.loop){ slideToIndex=parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); }else{ slideToIndex=clickedIndex; } if(swiper.params.loop){ var currentIndex=swiper.activeIndex; if(swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)){ swiper.loopFix(); swiper._clientLeft=swiper.$wrapperEl[0].clientLeft; currentIndex=swiper.activeIndex; } var prevIndex=swiper.slides.eq(currentIndex).prevAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); var nextIndex=swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); if(typeof prevIndex==='undefined'){ slideToIndex=nextIndex; } else if(typeof nextIndex==='undefined'){ slideToIndex=prevIndex; } else if(nextIndex - currentIndex < currentIndex - prevIndex){ slideToIndex=nextIndex; }else{ slideToIndex=prevIndex; }} swiper.slideTo(slideToIndex); }, update: function update(initial){ var swiper=this; var thumbsSwiper=swiper.thumbs.swiper; if(!thumbsSwiper){ return; } var slidesPerView=thumbsSwiper.params.slidesPerView==='auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; if(swiper.realIndex!==thumbsSwiper.realIndex){ var currentThumbsIndex=thumbsSwiper.activeIndex; var newThumbsIndex; if(thumbsSwiper.params.loop){ if(thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)){ thumbsSwiper.loopFix(); thumbsSwiper._clientLeft=thumbsSwiper.$wrapperEl[0].clientLeft; currentThumbsIndex=thumbsSwiper.activeIndex; } var prevThumbsIndex=thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index(); var nextThumbsIndex=thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index(); if(typeof prevThumbsIndex==='undefined'){ newThumbsIndex=nextThumbsIndex; } else if(typeof nextThumbsIndex==='undefined'){ newThumbsIndex=prevThumbsIndex; } else if(nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex){ newThumbsIndex=nextThumbsIndex; }else{ newThumbsIndex=prevThumbsIndex; }}else{ newThumbsIndex=swiper.realIndex; } if(thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0){ if(thumbsSwiper.params.centeredSlides){ if(newThumbsIndex > currentThumbsIndex){ newThumbsIndex=newThumbsIndex - Math.floor(slidesPerView / 2) + 1; }else{ newThumbsIndex=newThumbsIndex + Math.floor(slidesPerView / 2) - 1; }}else if(newThumbsIndex > currentThumbsIndex){ newThumbsIndex=newThumbsIndex - slidesPerView + 1; } thumbsSwiper.slideTo(newThumbsIndex, initial ? 0:undefined); }} var thumbsToActivate=1; var thumbActiveClass=swiper.params.thumbs.slideThumbActiveClass; if(swiper.params.slidesPerView > 1&&!swiper.params.centeredSlides){ thumbsToActivate=swiper.params.slidesPerView; } thumbsSwiper.slides.removeClass(thumbActiveClass); if(thumbsSwiper.params.loop){ for (var i=0; i < thumbsToActivate; i +=1){ thumbsSwiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]")).addClass(thumbActiveClass); }}else{ for (var i$1=0; i$1 < thumbsToActivate; i$1 +=1){ thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass); }} }, }; var Thumbs$1={ name: 'thumbs', params: { thumbs: { swiper: null, slideThumbActiveClass: 'swiper-slide-thumb-active', thumbsContainerClass: 'swiper-container-thumbs', }, }, create: function create(){ var swiper=this; Utils.extend(swiper, { thumbs: { swiper: null, init: Thumbs.init.bind(swiper), update: Thumbs.update.bind(swiper), onThumbClick: Thumbs.onThumbClick.bind(swiper), }, }); }, on: { beforeInit: function beforeInit(){ var swiper=this; var ref=swiper.params; var thumbs=ref.thumbs; if(!thumbs||!thumbs.swiper){ return; } swiper.thumbs.init(); swiper.thumbs.update(true); }, slideChange: function slideChange(){ var swiper=this; if(!swiper.thumbs.swiper){ return; } swiper.thumbs.update(); }, update: function update(){ var swiper=this; if(!swiper.thumbs.swiper){ return; } swiper.thumbs.update(); }, resize: function resize(){ var swiper=this; if(!swiper.thumbs.swiper){ return; } swiper.thumbs.update(); }, observerUpdate: function observerUpdate(){ var swiper=this; if(!swiper.thumbs.swiper){ return; } swiper.thumbs.update(); }, setTransition: function setTransition(duration){ var swiper=this; var thumbsSwiper=swiper.thumbs.swiper; if(!thumbsSwiper){ return; } thumbsSwiper.setTransition(duration); }, beforeDestroy: function beforeDestroy(){ var swiper=this; var thumbsSwiper=swiper.thumbs.swiper; if(!thumbsSwiper){ return; } if(swiper.thumbs.swiperCreated&&thumbsSwiper){ thumbsSwiper.destroy(); }}, }, }; var components=[ Device$1, Support$1, Browser$1, Resize, Observer$1, Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1 ]; if(typeof Swiper.use==='undefined'){ Swiper.use=Swiper.Class.use; Swiper.installModule=Swiper.Class.installModule; } Swiper.use(components); return Swiper; }))); !function(a){a.fn.hoverIntent=function(e,t,n){var o,r,v,i,u={interval:100,sensitivity:6,timeout:0};u="object"==typeof e?a.extend(u,e):a.isFunction(t)?a.extend(u,{over:e,out:t,selector:n}):a.extend(u,{over:e,out:e,selector:t});function s(e){o=e.pageX,r=e.pageY}function h(e){var t=a.extend({},e),n=this;n.hoverIntent_t&&(n.hoverIntent_t=clearTimeout(n.hoverIntent_t)),"mouseenter"===e.type?(v=t.pageX,i=t.pageY,a(n).on("mousemove.hoverIntent",s),n.hoverIntent_s||(n.hoverIntent_t=setTimeout(function(){I(t,n)},u.interval))):(a(n).off("mousemove.hoverIntent",s),n.hoverIntent_s&&(n.hoverIntent_t=setTimeout(function(){!function(e,t){t.hoverIntent_t=clearTimeout(t.hoverIntent_t),t.hoverIntent_s=!1,u.out.apply(t,[e])}(t,n)},u.timeout)))}var I=function(e,t){if(t.hoverIntent_t=clearTimeout(t.hoverIntent_t),Math.sqrt((v-o)*(v-o)+(i-r)*(i-r))o.oldScroll?o.forward:o.backward;for(var r in this.waypoints[i]){var s=this.waypoints[i][r];if(null!==s.triggerPoint){var a=o.oldScroll=s.triggerPoint;(a&&l||!a&&!l)&&(s.queueTrigger(n),t[s.group.id]=s.group)}}}for(var h in t)t[h].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},n.prototype.innerHeight=function(){return this.element==this.element.window?y.viewportHeight():this.adapter.innerHeight()},n.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},n.prototype.innerWidth=function(){return this.element==this.element.window?y.viewportWidth():this.adapter.innerWidth()},n.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;o=r.oldScroll,p=!l&&!h,!w&&(l&&h)?(c.queueTrigger(r.backward),o[c.group.id]=c.group):!w&&p?(c.queueTrigger(r.forward),o[c.group.id]=c.group):w&&r.oldScroll>=c.triggerPoint&&(c.queueTrigger(r.forward),o[c.group.id]=c.group)}}return y.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},n.findOrCreateByElement=function(t){return n.findByElement(t)||new n(t)},n.refreshAll=function(){for(var t in o)o[t].refresh()},n.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){t&&t(),n.refreshAll()},y.requestAnimationFrame=function(t){(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||e).call(window,t)},y.Context=n}(),function(){"use strict";function s(t,e){return t.triggerPoint-e.triggerPoint}function a(t,e){return e.triggerPoint-t.triggerPoint}var e={vertical:{},horizontal:{}},i=window.VcWaypoint;function o(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),e[this.axis][this.name]=this}o.prototype.add=function(t){this.waypoints.push(t)},o.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},o.prototype.flushTriggers=function(){for(var t in this.triggerQueues){var e=this.triggerQueues[t],i="up"===t||"left"===t;e.sort(i?a:s);for(var o=0,n=e.length;o 0||deltaY > 0)&&deltaX <=2&&deltaY <=2&&thisMove.timeStamp - lastMove.timeStamp <=300){ mouse=true; if(firstTime){ var $a=$(e.target).closest('a'); if($a.is('a')){ $.each(menuTrees, function(){ if($.contains(this.$root[0], $a[0])){ this.itemEnter({ currentTarget: $a[0] }); return false; }}); } firstTime=false; }} } lastMove=thisMove; }}; events[touchEvents ? 'touchstart':'pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut']=function(e){ if(isTouchEvent(e.originalEvent)){ mouse=false; }}; $(document).on(getEventsNS(events, eNS)); mouseDetectionEnabled=true; }else if(mouseDetectionEnabled&&disable){ $(document).off(eNS); mouseDetectionEnabled=false; }} function isTouchEvent(e){ return !/^(4|mouse)$/.test(e.pointerType); } function getEventsNS(events, eNS){ if(!eNS){ eNS=''; } var eventsNS={}; for (var i in events){ eventsNS[i.split(' ').join(eNS + ' ') + eNS]=events[i]; } return eventsNS; } $.SmartMenus=function(elm, options){ this.$root=$(elm); this.opts=options; this.rootId=''; this.accessIdPrefix=''; this.$subArrow=null; this.activatedItems=[]; this.visibleSubMenus=[]; this.showTimeout=0; this.hideTimeout=0; this.scrollTimeout=0; this.clickActivated=false; this.focusActivated=false; this.zIndexInc=0; this.idInc=0; this.$firstLink=null; this.$firstSub=null; this.disabled=false; this.$disableOverlay=null; this.$touchScrollingSub=null; this.cssTransforms3d='perspective' in elm.style||'webkitPerspective' in elm.style; this.wasCollapsible=false; this.init(); }; $.extend($.SmartMenus, { hideAll: function(){ $.each(menuTrees, function(){ this.menuHideAll(); }); }, destroy: function(){ while (menuTrees.length){ menuTrees[0].destroy(); } initMouseDetection(true); }, prototype: { init: function(refresh){ var self=this; if(!refresh){ menuTrees.push(this); this.rootId=(new Date().getTime() + Math.random() + '').replace(/\D/g, ''); this.accessIdPrefix='sm-' + this.rootId + '-'; if(this.$root.hasClass('sm-rtl')){ this.opts.rightToLeftSubMenus=true; } var eNS='.smartmenus'; this.$root .data('smartmenus', this) .attr('data-smartmenus-id', this.rootId) .dataSM('level', 1) .on(getEventsNS({ 'mouseover focusin': $.proxy(this.rootOver, this), 'mouseout focusout': $.proxy(this.rootOut, this), 'keydown': $.proxy(this.rootKeyDown, this) }, eNS)) .on(getEventsNS({ 'mouseenter': $.proxy(this.itemEnter, this), 'mouseleave': $.proxy(this.itemLeave, this), 'mousedown': $.proxy(this.itemDown, this), 'focus': $.proxy(this.itemFocus, this), 'blur': $.proxy(this.itemBlur, this), 'click': $.proxy(this.itemClick, this) }, eNS), 'a'); eNS +=this.rootId; if(this.opts.hideOnClick){ $(document).on(getEventsNS({ 'touchstart': $.proxy(this.docTouchStart, this), 'touchmove': $.proxy(this.docTouchMove, this), 'touchend': $.proxy(this.docTouchEnd, this), 'click': $.proxy(this.docClick, this) }, eNS)); } $(window).on(getEventsNS({ 'resize orientationchange': $.proxy(this.winResize, this) }, eNS)); if(this.opts.subIndicators){ this.$subArrow=$('').addClass('sub-arrow'); if(this.opts.subIndicatorsText){ this.$subArrow.html(this.opts.subIndicatorsText); }} initMouseDetection(); } this.$firstSub=this.$root.find('ul').each(function(){ self.menuInit($(this)); }).eq(0); this.$firstLink=this.$root.find('a').eq(0); if(this.opts.markCurrentItem){ var reDefaultDoc=/(index|default)\.[^#\?\/]*/i, reHash=/#.*/, locHref=window.location.href.replace(reDefaultDoc, ''), locHrefNoHash=locHref.replace(reHash, ''); this.$root.find('a').each(function(){ var href=this.href.replace(reDefaultDoc, ''), $this=$(this); if(href==locHref||href==locHrefNoHash){ $this.addClass('current'); if(self.opts.markCurrentTree){ $this.parentsUntil('[data-smartmenus-id]', 'ul').each(function(){ $(this).dataSM('parent-a').addClass('current'); }); }} }); } this.wasCollapsible=this.isCollapsible(); }, destroy: function(refresh){ if(!refresh){ var eNS='.smartmenus'; this.$root .removeData('smartmenus') .removeAttr('data-smartmenus-id') .removeDataSM('level') .off(eNS); eNS +=this.rootId; $(document).off(eNS); $(window).off(eNS); if(this.opts.subIndicators){ this.$subArrow=null; }} this.menuHideAll(); var self=this; this.$root.find('ul').each(function(){ var $this=$(this); if($this.dataSM('scroll-arrows')){ $this.dataSM('scroll-arrows').remove(); } if($this.dataSM('shown-before')){ if(self.opts.subMenusMinWidth||self.opts.subMenusMaxWidth){ $this.css({ width: '', minWidth: '', maxWidth: '' }).removeClass('sm-nowrap'); } if($this.dataSM('scroll-arrows')){ $this.dataSM('scroll-arrows').remove(); } $this.css({ zIndex: '', top: '', left: '', marginLeft: '', marginTop: '', display: '' }); } if(($this.attr('id')||'').indexOf(self.accessIdPrefix)==0){ $this.removeAttr('id'); }}) .removeDataSM('in-mega') .removeDataSM('shown-before') .removeDataSM('scroll-arrows') .removeDataSM('parent-a') .removeDataSM('level') .removeDataSM('beforefirstshowfired') .removeAttr('role') .removeAttr('aria-hidden') .removeAttr('aria-labelledby') .removeAttr('aria-expanded'); this.$root.find('a.has-submenu').each(function(){ var $this=$(this); if($this.attr('id').indexOf(self.accessIdPrefix)==0){ $this.removeAttr('id'); }}) .removeClass('has-submenu') .removeDataSM('sub') .removeAttr('aria-haspopup') .removeAttr('aria-controls') .removeAttr('aria-expanded') .closest('li').removeDataSM('sub'); if(this.opts.subIndicators){ this.$root.find('span.sub-arrow').remove(); } if(this.opts.markCurrentItem){ this.$root.find('a.current').removeClass('current'); } if(!refresh){ this.$root=null; this.$firstLink=null; this.$firstSub=null; if(this.$disableOverlay){ this.$disableOverlay.remove(); this.$disableOverlay=null; } menuTrees.splice($.inArray(this, menuTrees), 1); }}, disable: function(noOverlay){ if(!this.disabled){ this.menuHideAll(); if(!noOverlay&&!this.opts.isPopup&&this.$root.is(':visible')){ var pos=this.$root.offset(); this.$disableOverlay=$('
').css({ position: 'absolute', top: pos.top, left: pos.left, width: this.$root.outerWidth(), height: this.$root.outerHeight(), zIndex: this.getStartZIndex(true), opacity: 0 }).appendTo(document.body); } this.disabled=true; }}, docClick: function(e){ if(this.$touchScrollingSub){ this.$touchScrollingSub=null; return; } if(this.visibleSubMenus.length&&!$.contains(this.$root[0], e.target)||$(e.target).closest('a').length){ this.menuHideAll(); }}, docTouchEnd: function(e){ if(!this.lastTouch){ return; } if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!$.contains(this.$root[0], this.lastTouch.target))){ if(this.hideTimeout){ clearTimeout(this.hideTimeout); this.hideTimeout=0; } var self=this; this.hideTimeout=setTimeout(function(){ self.menuHideAll(); }, 350); } this.lastTouch=null; }, docTouchMove: function(e){ if(!this.lastTouch){ return; } var touchPoint=e.originalEvent.touches[0]; this.lastTouch.x2=touchPoint.pageX; this.lastTouch.y2=touchPoint.pageY; }, docTouchStart: function(e){ var touchPoint=e.originalEvent.touches[0]; this.lastTouch={ x1: touchPoint.pageX, y1: touchPoint.pageY, target: touchPoint.target };}, enable: function(){ if(this.disabled){ if(this.$disableOverlay){ this.$disableOverlay.remove(); this.$disableOverlay=null; } this.disabled=false; }}, getClosestMenu: function(elm){ var $closestMenu=$(elm).closest('ul'); while ($closestMenu.dataSM('in-mega')){ $closestMenu=$closestMenu.parent().closest('ul'); } return $closestMenu[0]||null; }, getHeight: function($elm){ return this.getOffset($elm, true); }, getOffset: function($elm, height){ var old; if($elm.css('display')=='none'){ old={ position: $elm[0].style.position, visibility: $elm[0].style.visibility }; $elm.css({ position: 'absolute', visibility: 'hidden' }).show(); } var box=$elm[0].getBoundingClientRect&&$elm[0].getBoundingClientRect(), val=box&&(height ? box.height||box.bottom - box.top:box.width||box.right - box.left); if(!val&&val!==0){ val=height ? $elm[0].offsetHeight:$elm[0].offsetWidth; } if(old){ $elm.hide().css(old); } return val; }, getStartZIndex: function(root){ var zIndex=parseInt(this[root ? '$root':'$firstSub'].css('z-index')); if(!root&&isNaN(zIndex)){ zIndex=parseInt(this.$root.css('z-index')); } return !isNaN(zIndex) ? zIndex:1; }, getTouchPoint: function(e){ return e.touches&&e.touches[0]||e.changedTouches&&e.changedTouches[0]||e; }, getViewport: function(height){ var name=height ? 'Height':'Width', val=document.documentElement['client' + name], val2=window['inner' + name]; if(val2){ val=Math.min(val, val2); } return val; }, getViewportHeight: function(){ return this.getViewport(true); }, getViewportWidth: function(){ return this.getViewport(); }, getWidth: function($elm){ return this.getOffset($elm); }, handleEvents: function(){ return !this.disabled&&this.isCSSOn(); }, handleItemEvents: function($a){ return this.handleEvents()&&!this.isLinkInMegaMenu($a); }, isCollapsible: function(){ return this.$firstSub.css('position')=='static'; }, isCSSOn: function(){ return this.$firstLink.css('display')!='inline'; }, isFixed: function(){ var isFixed=this.$root.css('position')=='fixed'; if(!isFixed){ this.$root.parentsUntil('body').each(function(){ if($(this).css('position')=='fixed'){ isFixed=true; return false; }}); } return isFixed; }, isLinkInMegaMenu: function($a){ return $(this.getClosestMenu($a[0])).hasClass('mega-menu'); }, isTouchMode: function(){ return !mouse||this.opts.noMouseOver||this.isCollapsible(); }, itemActivate: function($a, hideDeeperSubs){ var $ul=$a.closest('ul'), level=$ul.dataSM('level'); if(level > 1&&(!this.activatedItems[level - 2]||this.activatedItems[level - 2][0]!=$ul.dataSM('parent-a')[0])){ var self=this; $($ul.parentsUntil('[data-smartmenus-id]', 'ul').get().reverse()).add($ul).each(function(){ self.itemActivate($(this).dataSM('parent-a')); }); } if(!this.isCollapsible()||hideDeeperSubs){ this.menuHideSubMenus(!this.activatedItems[level - 1]||this.activatedItems[level - 1][0]!=$a[0] ? level - 1:level); } this.activatedItems[level - 1]=$a; if(this.$root.triggerHandler('activate.smapi', $a[0])===false){ return; } var $sub=$a.dataSM('sub'); if($sub&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){ this.menuShow($sub); }}, itemBlur: function(e){ var $a=$(e.currentTarget); if(!this.handleItemEvents($a)){ return; } this.$root.triggerHandler('blur.smapi', $a[0]); }, itemClick: function(e){ var $a=$(e.currentTarget); if(!this.handleItemEvents($a)){ return; } if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==$a.closest('ul')[0]){ this.$touchScrollingSub=null; e.stopPropagation(); return false; } if(this.$root.triggerHandler('click.smapi', $a[0])===false){ return false; } var subArrowClicked=$(e.target).is('.sub-arrow'), $sub=$a.dataSM('sub'), firstLevelSub=$sub ? $sub.dataSM('level')==2:false, collapsible=this.isCollapsible(), behaviorToggle=/toggle$/.test(this.opts.collapsibleBehavior), behaviorLink=/link$/.test(this.opts.collapsibleBehavior), behaviorAccordion=/^accordion/.test(this.opts.collapsibleBehavior); if($sub&&!$sub.is(':visible')){ if(!behaviorLink||!collapsible||subArrowClicked){ if(this.opts.showOnClick&&firstLevelSub){ this.clickActivated=true; } this.itemActivate($a, behaviorAccordion); if($sub.is(':visible')){ this.focusActivated=true; return false; }} }else if(collapsible&&(behaviorToggle||subArrowClicked)){ this.itemActivate($a, behaviorAccordion); this.menuHide($sub); if(behaviorToggle){ this.focusActivated=false; } return false; } if(this.opts.showOnClick&&firstLevelSub||$a.hasClass('disabled')||this.$root.triggerHandler('select.smapi', $a[0])===false){ return false; }}, itemDown: function(e){ var $a=$(e.currentTarget); if(!this.handleItemEvents($a)){ return; } $a.dataSM('mousedown', true); }, itemEnter: function(e){ var $a=$(e.currentTarget); if(!this.handleItemEvents($a)){ return; } if(!this.isTouchMode()){ if(this.showTimeout){ clearTimeout(this.showTimeout); this.showTimeout=0; } var self=this; this.showTimeout=setTimeout(function(){ self.itemActivate($a); }, this.opts.showOnClick&&$a.closest('ul').dataSM('level')==1 ? 1:this.opts.showTimeout); } this.$root.triggerHandler('mouseenter.smapi', $a[0]); }, itemFocus: function(e){ var $a=$(e.currentTarget); if(!this.handleItemEvents($a)){ return; } if(this.focusActivated&&(!this.isTouchMode()||!$a.dataSM('mousedown'))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length - 1][0]!=$a[0])){ this.itemActivate($a, true); } this.$root.triggerHandler('focus.smapi', $a[0]); }, itemLeave: function(e){ var $a=$(e.currentTarget); if(!this.handleItemEvents($a)){ return; } if(!this.isTouchMode()){ $a[0].blur(); if(this.showTimeout){ clearTimeout(this.showTimeout); this.showTimeout=0; }} $a.removeDataSM('mousedown'); this.$root.triggerHandler('mouseleave.smapi', $a[0]); }, menuHide: function($sub){ if(this.$root.triggerHandler('beforehide.smapi', $sub[0])===false){ return; } if(canAnimate){ $sub.stop(true, true); } if($sub.css('display')!='none'){ var complete=function(){ $sub.css('z-index', ''); }; if(this.isCollapsible()){ if(canAnimate&&this.opts.collapsibleHideFunction){ this.opts.collapsibleHideFunction.call(this, $sub, complete); }else{ $sub.hide(this.opts.collapsibleHideDuration, complete); }}else{ if(canAnimate&&this.opts.hideFunction){ this.opts.hideFunction.call(this, $sub, complete); }else{ $sub.hide(this.opts.hideDuration, complete); }} if($sub.dataSM('scroll')){ this.menuScrollStop($sub); $sub.css({ 'touch-action': '', '-ms-touch-action': '', '-webkit-transform': '', transform: '' }) .off('.smartmenus_scroll').removeDataSM('scroll').dataSM('scroll-arrows').hide(); } $sub.dataSM('parent-a').removeClass('highlighted').attr('aria-expanded', 'false'); $sub.attr({ 'aria-expanded': 'false', 'aria-hidden': 'true' }); var level=$sub.dataSM('level'); this.activatedItems.splice(level - 1, 1); this.visibleSubMenus.splice($.inArray($sub, this.visibleSubMenus), 1); this.$root.triggerHandler('hide.smapi', $sub[0]); }}, menuHideAll: function(){ if(this.showTimeout){ clearTimeout(this.showTimeout); this.showTimeout=0; } var level=this.opts.isPopup ? 1:0; for (var i=this.visibleSubMenus.length - 1; i >=level; i--){ this.menuHide(this.visibleSubMenus[i]); } if(this.opts.isPopup){ if(canAnimate){ this.$root.stop(true, true); } if(this.$root.is(':visible')){ if(canAnimate&&this.opts.hideFunction){ this.opts.hideFunction.call(this, this.$root); }else{ this.$root.hide(this.opts.hideDuration); }} } this.activatedItems=[]; this.visibleSubMenus=[]; this.clickActivated=false; this.focusActivated=false; this.zIndexInc=0; this.$root.triggerHandler('hideAll.smapi'); }, menuHideSubMenus: function(level){ for (var i=this.activatedItems.length - 1; i >=level; i--){ var $sub=this.activatedItems[i].dataSM('sub'); if($sub){ this.menuHide($sub); }} }, menuInit: function($ul){ if(!$ul.dataSM('in-mega')){ if($ul.hasClass('mega-menu')){ $ul.find('ul').dataSM('in-mega', true); } var level=2, par=$ul[0]; while ((par=par.parentNode.parentNode)!=this.$root[0]){ level++; } var $a=$ul.prevAll('a').eq(-1); if(!$a.length){ $a=$ul.prevAll().find('a').eq(-1); } $a.addClass('has-submenu').dataSM('sub', $ul); $ul.dataSM('parent-a', $a) .dataSM('level', level) .parent().dataSM('sub', $ul); var aId=$a.attr('id')||this.accessIdPrefix + (++this.idInc), ulId=$ul.attr('id')||this.accessIdPrefix + (++this.idInc); $a.attr({ id: aId, 'aria-haspopup': 'true', 'aria-controls': ulId, 'aria-expanded': 'false' }); $ul.attr({ id: ulId, 'role': 'group', 'aria-hidden': 'true', 'aria-labelledby': aId, 'aria-expanded': 'false' }); if(this.opts.subIndicators){ $a[this.opts.subIndicatorsPos](this.$subArrow.clone()); }} }, menuPosition: function($sub){ var $a=$sub.dataSM('parent-a'), $li=$a.closest('li'), $ul=$li.parent(), level=$sub.dataSM('level'), subW=this.getWidth($sub), subH=this.getHeight($sub), itemOffset=$a.offset(), itemX=itemOffset.left, itemY=itemOffset.top, itemW=this.getWidth($a), itemH=this.getHeight($a), $win=$(window), winX=$win.scrollLeft(), winY=$win.scrollTop(), winW=this.getViewportWidth(), winH=this.getViewportHeight(), horizontalParent=$ul.parent().is('[data-sm-horizontal-sub]')||level==2&&!$ul.hasClass('sm-vertical'), rightToLeft=this.opts.rightToLeftSubMenus&&!$li.is('[data-sm-reverse]')||!this.opts.rightToLeftSubMenus&&$li.is('[data-sm-reverse]'), subOffsetX=level==2 ? this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX, subOffsetY=level==2 ? this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY, x, y; if(horizontalParent){ x=rightToLeft ? itemW - subW - subOffsetX:subOffsetX; y=this.opts.bottomToTopSubMenus ? -subH - subOffsetY:itemH + subOffsetY; }else{ x=rightToLeft ? subOffsetX - subW:itemW - subOffsetX; y=this.opts.bottomToTopSubMenus ? itemH - subOffsetY - subH:subOffsetY; } if(this.opts.keepInViewport){ var absX=itemX + x, absY=itemY + y; if(rightToLeft&&absX < winX){ x=horizontalParent ? winX - absX + x:itemW - subOffsetX; }else if(!rightToLeft&&absX + subW > winX + winW){ x=horizontalParent ? winX + winW - subW - absX + x:subOffsetX - subW; } if(!horizontalParent){ if(subH < winH&&absY + subH > winY + winH){ y +=winY + winH - subH - absY; }else if(subH >=winH||absY < winY){ y +=winY - absY; }} if(horizontalParent&&(absY + subH > winY + winH + 0.49||absY < winY)||!horizontalParent&&subH > winH + 0.49){ var self=this; if(!$sub.dataSM('scroll-arrows')){ $sub.dataSM('scroll-arrows', $([$('')[0], $('')[0]]) .on({ mouseenter: function(){ $sub.dataSM('scroll').up=$(this).hasClass('scroll-up'); self.menuScroll($sub); }, mouseleave: function(e){ self.menuScrollStop($sub); self.menuScrollOut($sub, e); }, 'mousewheel DOMMouseScroll': function(e){ e.preventDefault(); }}) .insertAfter($sub) ); } var eNS='.smartmenus_scroll'; $sub.dataSM('scroll', { y: this.cssTransforms3d ? 0:y - itemH, step: 1, itemH: itemH, subH: subH, arrowDownH: this.getHeight($sub.dataSM('scroll-arrows').eq(1)) }) .on(getEventsNS({ 'mouseover': function(e){ self.menuScrollOver($sub, e); }, 'mouseout': function(e){ self.menuScrollOut($sub, e); }, 'mousewheel DOMMouseScroll': function(e){ self.menuScrollMousewheel($sub, e); }}, eNS)) .dataSM('scroll-arrows').css({ top: 'auto', left: '0', marginLeft: x + (parseInt($sub.css('border-left-width'))||0), width: subW - (parseInt($sub.css('border-left-width'))||0) - (parseInt($sub.css('border-right-width'))||0), zIndex: $sub.css('z-index') }) .eq(horizontalParent&&this.opts.bottomToTopSubMenus ? 0:1).show(); if(this.isFixed()){ var events={}; events[touchEvents ? 'touchstart touchmove touchend':'pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp']=function(e){ self.menuScrollTouch($sub, e); }; $sub.css({ 'touch-action': 'none', '-ms-touch-action': 'none' }).on(getEventsNS(events, eNS)); }} } $sub.css({ top: 'auto', left: '0', marginLeft: x, marginTop: y - itemH }); }, menuScroll: function($sub, once, step){ var data=$sub.dataSM('scroll'), $arrows=$sub.dataSM('scroll-arrows'), end=data.up ? data.upEnd:data.downEnd, diff; if(!once&&data.momentum){ data.momentum *=0.92; diff=data.momentum; if(diff < 0.5){ this.menuScrollStop($sub); return; }}else{ diff=step||(once||!this.opts.scrollAccelerate ? this.opts.scrollStep:Math.floor(data.step)); } var level=$sub.dataSM('level'); if(this.activatedItems[level - 1]&&this.activatedItems[level - 1].dataSM('sub')&&this.activatedItems[level - 1].dataSM('sub').is(':visible')){ this.menuHideSubMenus(level - 1); } data.y=data.up&&end <=data.y||!data.up&&end >=data.y ? data.y:(Math.abs(end - data.y) > diff ? data.y + (data.up ? diff:-diff):end); $sub.css(this.cssTransforms3d ? { '-webkit-transform': 'translate3d(0, ' + data.y + 'px, 0)', transform: 'translate3d(0, ' + data.y + 'px, 0)' }:{ marginTop: data.y }); if(mouse&&(data.up&&data.y > data.downEnd||!data.up&&data.y < data.upEnd)){ $arrows.eq(data.up ? 1:0).show(); } if(data.y==end){ if(mouse){ $arrows.eq(data.up ? 0:1).hide(); } this.menuScrollStop($sub); }else if(!once){ if(this.opts.scrollAccelerate&&data.step < this.opts.scrollStep){ data.step +=0.2; } var self=this; this.scrollTimeout=requestAnimationFrame(function(){ self.menuScroll($sub); }); }}, menuScrollMousewheel: function($sub, e){ if(this.getClosestMenu(e.target)==$sub[0]){ e=e.originalEvent; var up=(e.wheelDelta||-e.detail) > 0; if($sub.dataSM('scroll-arrows').eq(up ? 0:1).is(':visible')){ $sub.dataSM('scroll').up=up; this.menuScroll($sub, true); }} e.preventDefault(); }, menuScrollOut: function($sub, e){ if(mouse){ if(!/^scroll-(up|down)/.test((e.relatedTarget||'').className)&&($sub[0]!=e.relatedTarget&&!$.contains($sub[0], e.relatedTarget)||this.getClosestMenu(e.relatedTarget)!=$sub[0])){ $sub.dataSM('scroll-arrows').css('visibility', 'hidden'); }} }, menuScrollOver: function($sub, e){ if(mouse){ if(!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==$sub[0]){ this.menuScrollRefreshData($sub); var data=$sub.dataSM('scroll'), upEnd=$(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH; $sub.dataSM('scroll-arrows').eq(0).css('margin-top', upEnd).end() .eq(1).css('margin-top', upEnd + this.getViewportHeight() - data.arrowDownH).end() .css('visibility', 'visible'); }} }, menuScrollRefreshData: function($sub){ var data=$sub.dataSM('scroll'), upEnd=$(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH; if(this.cssTransforms3d){ upEnd=-(parseFloat($sub.css('margin-top')) - upEnd); } $.extend(data, { upEnd: upEnd, downEnd: upEnd + this.getViewportHeight() - data.subH }); }, menuScrollStop: function($sub){ if(this.scrollTimeout){ cancelAnimationFrame(this.scrollTimeout); this.scrollTimeout=0; $sub.dataSM('scroll').step=1; return true; }}, menuScrollTouch: function($sub, e){ e=e.originalEvent; if(isTouchEvent(e)){ var touchPoint=this.getTouchPoint(e); if(this.getClosestMenu(touchPoint.target)==$sub[0]){ var data=$sub.dataSM('scroll'); if(/(start|down)$/i.test(e.type)){ if(this.menuScrollStop($sub)){ e.preventDefault(); this.$touchScrollingSub=$sub; }else{ this.$touchScrollingSub=null; } this.menuScrollRefreshData($sub); $.extend(data, { touchStartY: touchPoint.pageY, touchStartTime: e.timeStamp }); }else if(/move$/i.test(e.type)){ var prevY=data.touchY!==undefined ? data.touchY:data.touchStartY; if(prevY!==undefined&&prevY!=touchPoint.pageY){ this.$touchScrollingSub=$sub; var up=prevY < touchPoint.pageY; if(data.up!==undefined&&data.up!=up){ $.extend(data, { touchStartY: touchPoint.pageY, touchStartTime: e.timeStamp }); } $.extend(data, { up: up, touchY: touchPoint.pageY }); this.menuScroll($sub, true, Math.abs(touchPoint.pageY - prevY)); } e.preventDefault(); }else{ if(data.touchY!==undefined){ if(data.momentum=Math.pow(Math.abs(touchPoint.pageY - data.touchStartY) / (e.timeStamp - data.touchStartTime), 2) * 15){ this.menuScrollStop($sub); this.menuScroll($sub); e.preventDefault(); } delete data.touchY; }} }} }, menuShow: function($sub){ if(!$sub.dataSM('beforefirstshowfired')){ $sub.dataSM('beforefirstshowfired', true); if(this.$root.triggerHandler('beforefirstshow.smapi', $sub[0])===false){ return; }} if(this.$root.triggerHandler('beforeshow.smapi', $sub[0])===false){ return; } $sub.dataSM('shown-before', true); if(canAnimate){ $sub.stop(true, true); } if(!$sub.is(':visible')){ var $a=$sub.dataSM('parent-a'), collapsible=this.isCollapsible(); if(this.opts.keepHighlighted||collapsible){ $a.addClass('highlighted'); } if(collapsible){ $sub.removeClass('sm-nowrap').css({ zIndex: '', width: 'auto', minWidth: '', maxWidth: '', top: '', left: '', marginLeft: '', marginTop: '' }); }else{ $sub.css('z-index', this.zIndexInc=(this.zIndexInc||this.getStartZIndex()) + 1); if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){ $sub.css({ width: 'auto', minWidth: '', maxWidth: '' }).addClass('sm-nowrap'); if(this.opts.subMenusMinWidth){ $sub.css('min-width', this.opts.subMenusMinWidth); } if(this.opts.subMenusMaxWidth){ var noMaxWidth=this.getWidth($sub); $sub.css('max-width', this.opts.subMenusMaxWidth); if(noMaxWidth > this.getWidth($sub)){ $sub.removeClass('sm-nowrap').css('width', this.opts.subMenusMaxWidth); }} } this.menuPosition($sub); } var complete=function(){ $sub.css('overflow', ''); }; if(collapsible){ if(canAnimate&&this.opts.collapsibleShowFunction){ this.opts.collapsibleShowFunction.call(this, $sub, complete); }else{ $sub.show(this.opts.collapsibleShowDuration, complete); }}else{ if(canAnimate&&this.opts.showFunction){ this.opts.showFunction.call(this, $sub, complete); }else{ $sub.show(this.opts.showDuration, complete); }} $a.attr('aria-expanded', 'true'); $sub.attr({ 'aria-expanded': 'true', 'aria-hidden': 'false' }); this.visibleSubMenus.push($sub); this.$root.triggerHandler('show.smapi', $sub[0]); }}, popupHide: function(noHideTimeout){ if(this.hideTimeout){ clearTimeout(this.hideTimeout); this.hideTimeout=0; } var self=this; this.hideTimeout=setTimeout(function(){ self.menuHideAll(); }, noHideTimeout ? 1:this.opts.hideTimeout); }, popupShow: function(left, top){ if(!this.opts.isPopup){ alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'); return; } if(this.hideTimeout){ clearTimeout(this.hideTimeout); this.hideTimeout=0; } this.$root.dataSM('shown-before', true); if(canAnimate){ this.$root.stop(true, true); } if(!this.$root.is(':visible')){ this.$root.css({ left: left, top: top }); var self=this, complete=function(){ self.$root.css('overflow', ''); }; if(canAnimate&&this.opts.showFunction){ this.opts.showFunction.call(this, this.$root, complete); }else{ this.$root.show(this.opts.showDuration, complete); } this.visibleSubMenus[0]=this.$root; }}, refresh: function(){ this.destroy(true); this.init(true); }, rootKeyDown: function(e){ if(!this.handleEvents()){ return; } switch (e.keyCode){ case 27: var $activeTopItem=this.activatedItems[0]; if($activeTopItem){ this.menuHideAll(); $activeTopItem[0].focus(); var $sub=$activeTopItem.dataSM('sub'); if($sub){ this.menuHide($sub); }} break; case 32: var $target=$(e.target); if($target.is('a')&&this.handleItemEvents($target)){ var $sub=$target.dataSM('sub'); if($sub&&!$sub.is(':visible')){ this.itemClick({ currentTarget: e.target }); e.preventDefault(); }} break; }}, rootOut: function(e){ if(!this.handleEvents()||this.isTouchMode()||e.target==this.$root[0]){ return; } if(this.hideTimeout){ clearTimeout(this.hideTimeout); this.hideTimeout=0; } if(!this.opts.showOnClick||!this.opts.hideOnClick){ var self=this; this.hideTimeout=setTimeout(function(){ self.menuHideAll(); }, this.opts.hideTimeout); }}, rootOver: function(e){ if(!this.handleEvents()||this.isTouchMode()||e.target==this.$root[0]){ return; } if(this.hideTimeout){ clearTimeout(this.hideTimeout); this.hideTimeout=0; }}, winResize: function(e){ if(!this.handleEvents()){ if(this.$disableOverlay){ var pos=this.$root.offset(); this.$disableOverlay.css({ top: pos.top, left: pos.left, width: this.$root.outerWidth(), height: this.$root.outerHeight() }); } return; } if(!('onorientationchange' in window)||e.type=='orientationchange'){ var collapsible=this.isCollapsible(); if(!(this.wasCollapsible&&collapsible)){ if(this.activatedItems.length){ this.activatedItems[this.activatedItems.length - 1][0].blur(); } this.menuHideAll(); } this.wasCollapsible=collapsible; }} }}); $.fn.dataSM=function(key, val){ if(val){ return this.data(key + '_smartmenus', val); } return this.data(key + '_smartmenus'); }; $.fn.removeDataSM=function(key){ return this.removeData(key + '_smartmenus'); }; $.fn.smartmenus=function(options){ if(typeof options=='string'){ var args=arguments, method=options; Array.prototype.shift.call(args); return this.each(function(){ var smartmenus=$(this).data('smartmenus'); if(smartmenus&&smartmenus[method]){ smartmenus[method].apply(smartmenus, args); }}); } return this.each(function(){ var dataOpts=$(this).data('sm-options')||null; if(dataOpts){ try { dataOpts=eval('(' + dataOpts + ')'); } catch(e){ dataOpts=null; alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.'); };} new $.SmartMenus(this, $.extend({}, $.fn.smartmenus.defaults, options, dataOpts)); }); }; $.fn.smartmenus.defaults={ isPopup: false, mainMenuSubOffsetX: 0, mainMenuSubOffsetY: 0, subMenusSubOffsetX: 0, subMenusSubOffsetY: 0, subMenusMinWidth: '10em', subMenusMaxWidth: '20em', subIndicators: true, subIndicatorsPos: 'append', subIndicatorsText: '', scrollStep: 30, scrollAccelerate: true, showTimeout: 250, hideTimeout: 500, showDuration: 0, showFunction: null, hideDuration: 0, hideFunction: function($ul, complete){ $ul.fadeOut(200, complete); }, collapsibleShowDuration:0, collapsibleShowFunction:function($ul, complete){ $ul.slideDown(200, complete); }, collapsibleHideDuration:0, collapsibleHideFunction:function($ul, complete){ $ul.slideUp(200, complete); }, showOnClick: false, hideOnClick: true, noMouseOver: false, keepInViewport: true, keepHighlighted: true, markCurrentItem: false, markCurrentTree: true, rightToLeftSubMenus: false, bottomToTopSubMenus: false, collapsibleBehavior: 'default' }; return $; })); !function t(e,n,r){function o(i,s){if(!n[i]){if(!e[i]){var a="function"==typeof require&&require;if(!s&&a)return a(i,!0);if(l)return l(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[i]={exports:{}};e[i][0].call(u.exports,function(t){var n=e[i][1][t];return o(n?n:t)},u,u.exports,t,e,n,r)}return n[i].exports}for(var l="function"==typeof require&&require,i=0;i=0&&n.splice(r,1),t.className=n.join(" ")}n.add=function(t,e){t.classList?t.classList.add(e):r(t,e)},n.remove=function(t,e){t.classList?t.classList.remove(e):o(t,e)},n.list=function(t){return t.classList?Array.prototype.slice.apply(t.classList):t.className.split(" ")}},{}],3:[function(t,e,n){"use strict";function r(t,e){return window.getComputedStyle(t)[e]}function o(t,e,n){return"number"==typeof n&&(n=n.toString()+"px"),t.style[e]=n,t}function l(t,e){for(var n in e){var r=e[n];"number"==typeof r&&(r=r.toString()+"px"),t.style[n]=r}return t}var i={};i.e=function(t,e){var n=document.createElement(t);return n.className=e,n},i.appendTo=function(t,e){return e.appendChild(t),t},i.css=function(t,e,n){return"object"==typeof e?l(t,e):"undefined"==typeof n?r(t,e):o(t,e,n)},i.matches=function(t,e){return"undefined"!=typeof t.matches?t.matches(e):"undefined"!=typeof t.matchesSelector?t.matchesSelector(e):"undefined"!=typeof t.webkitMatchesSelector?t.webkitMatchesSelector(e):"undefined"!=typeof t.mozMatchesSelector?t.mozMatchesSelector(e):"undefined"!=typeof t.msMatchesSelector?t.msMatchesSelector(e):void 0},i.remove=function(t){"undefined"!=typeof t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)},i.queryChildren=function(t,e){return Array.prototype.filter.call(t.childNodes,function(t){return i.matches(t,e)})},e.exports=i},{}],4:[function(t,e,n){"use strict";var r=function(t){this.element=t,this.events={}};r.prototype.bind=function(t,e){"undefined"==typeof this.events[t]&&(this.events[t]=[]),this.events[t].push(e),this.element.addEventListener(t,e,!1)},r.prototype.unbind=function(t,e){var n="undefined"!=typeof e;this.events[t]=this.events[t].filter(function(r){return!(!n||r===e)||(this.element.removeEventListener(t,r,!1),!1)},this)},r.prototype.unbindAll=function(){for(var t in this.events)this.unbind(t)};var o=function(){this.eventElements=[]};o.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return"undefined"==typeof e&&(e=new r(t),this.eventElements.push(e)),e},o.prototype.bind=function(t,e,n){this.eventElement(t).bind(e,n)},o.prototype.unbind=function(t,e,n){this.eventElement(t).unbind(e,n)},o.prototype.unbindAll=function(){for(var t=0;te.scrollbarYTop?1:-1;i(t,"top",t.scrollTop+s*e.containerHeight),l(t),r.stopPropagation()}),e.event.bind(e.scrollbarX,"click",r),e.event.bind(e.scrollbarXRail,"click",function(r){var o=r.pageX-window.pageXOffset-n(e.scrollbarXRail).left,s=o>e.scrollbarXLeft?1:-1;i(t,"left",t.scrollLeft+s*e.containerWidth),l(t),r.stopPropagation()})}var o=t("../instances"),l=t("../update-geometry"),i=t("../update-scroll");e.exports=function(t){var e=o.get(t);r(t,e)}},{"../instances":18,"../update-geometry":19,"../update-scroll":20}],11:[function(t,e,n){"use strict";function r(t,e){function n(n){var o=r+n*e.railXRatio,i=Math.max(0,e.scrollbarXRail.getBoundingClientRect().left)+e.railXRatio*(e.railXWidth-e.scrollbarXWidth);o<0?e.scrollbarXLeft=0:o>i?e.scrollbarXLeft=i:e.scrollbarXLeft=o;var s=l.toInt(e.scrollbarXLeft*(e.contentWidth-e.containerWidth)/(e.containerWidth-e.railXRatio*e.scrollbarXWidth))-e.negativeScrollAdjustment;c(t,"left",s)}var r=null,o=null,s=function(e){n(e.pageX-o),a(t),e.stopPropagation(),e.preventDefault()},u=function(){l.stopScrolling(t,"x"),e.event.unbind(e.ownerDocument,"mousemove",s)};e.event.bind(e.scrollbarX,"mousedown",function(n){o=n.pageX,r=l.toInt(i.css(e.scrollbarX,"left"))*e.railXRatio,l.startScrolling(t,"x"),e.event.bind(e.ownerDocument,"mousemove",s),e.event.once(e.ownerDocument,"mouseup",u),n.stopPropagation(),n.preventDefault()})}function o(t,e){function n(n){var o=r+n*e.railYRatio,i=Math.max(0,e.scrollbarYRail.getBoundingClientRect().top)+e.railYRatio*(e.railYHeight-e.scrollbarYHeight);o<0?e.scrollbarYTop=0:o>i?e.scrollbarYTop=i:e.scrollbarYTop=o;var s=l.toInt(e.scrollbarYTop*(e.contentHeight-e.containerHeight)/(e.containerHeight-e.railYRatio*e.scrollbarYHeight));c(t,"top",s)}var r=null,o=null,s=function(e){n(e.pageY-o),a(t),e.stopPropagation(),e.preventDefault()},u=function(){l.stopScrolling(t,"y"),e.event.unbind(e.ownerDocument,"mousemove",s)};e.event.bind(e.scrollbarY,"mousedown",function(n){o=n.pageY,r=l.toInt(i.css(e.scrollbarY,"top"))*e.railYRatio,l.startScrolling(t,"y"),e.event.bind(e.ownerDocument,"mousemove",s),e.event.once(e.ownerDocument,"mouseup",u),n.stopPropagation(),n.preventDefault()})}var l=t("../../lib/helper"),i=t("../../lib/dom"),s=t("../instances"),a=t("../update-geometry"),c=t("../update-scroll");e.exports=function(t){var e=s.get(t);r(t,e),o(t,e)}},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],12:[function(t,e,n){"use strict";function r(t,e){function n(n,r){var o=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===o&&r>0||o>=e.contentHeight-e.containerHeight&&r<0)return!e.settings.wheelPropagation}var l=t.scrollLeft;if(0===r){if(!e.scrollbarXActive)return!1;if(0===l&&n<0||l>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}var r=!1;e.event.bind(t,"mouseenter",function(){r=!0}),e.event.bind(t,"mouseleave",function(){r=!1});var i=!1;e.event.bind(e.ownerDocument,"keydown",function(c){if(!(c.isDefaultPrevented&&c.isDefaultPrevented()||c.defaultPrevented)){var u=l.matches(e.scrollbarX,":focus")||l.matches(e.scrollbarY,":focus");if(r||u){var d=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(d){if("IFRAME"===d.tagName)d=d.contentDocument.activeElement;else for(;d.shadowRoot;)d=d.shadowRoot.activeElement;if(o.isEditable(d))return}var p=0,f=0;switch(c.which){case 37:p=c.metaKey?-e.contentWidth:c.altKey?-e.containerWidth:-30;break;case 38:f=c.metaKey?e.contentHeight:c.altKey?e.containerHeight:30;break;case 39:p=c.metaKey?e.contentWidth:c.altKey?e.containerWidth:30;break;case 40:f=c.metaKey?-e.contentHeight:c.altKey?-e.containerHeight:-30;break;case 33:f=90;break;case 32:f=c.shiftKey?90:-90;break;case 34:f=-90;break;case 35:f=c.ctrlKey?-e.contentHeight:-e.containerHeight;break;case 36:f=c.ctrlKey?t.scrollTop:e.containerHeight;break;default:return}a(t,"top",t.scrollTop-f),a(t,"left",t.scrollLeft+p),s(t),i=n(p,f),i&&c.preventDefault()}}})}var o=t("../../lib/helper"),l=t("../../lib/dom"),i=t("../instances"),s=t("../update-geometry"),a=t("../update-scroll");e.exports=function(t){var e=i.get(t);r(t,e)}},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],13:[function(t,e,n){"use strict";function r(t,e){function n(n,r){var o=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===o&&r>0||o>=e.contentHeight-e.containerHeight&&r<0)return!e.settings.wheelPropagation}var l=t.scrollLeft;if(0===r){if(!e.scrollbarXActive)return!1;if(0===l&&n<0||l>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}function r(t){var e=t.deltaX,n=-1*t.deltaY;return"undefined"!=typeof e&&"undefined"!=typeof n||(e=-1*t.wheelDeltaX/6,n=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,n*=10),e!==e&&n!==n&&(e=0,n=t.wheelDelta),t.shiftKey?[-n,-e]:[e,n]}function o(e,n){var r=t.querySelector("textarea:hover, select[multiple]:hover, .ps-child:hover");if(r){if(!window.getComputedStyle(r).overflow.match(/(scroll|auto)/))return!1;var o=r.scrollHeight-r.clientHeight;if(o>0&&!(0===r.scrollTop&&n>0||r.scrollTop===o&&n<0))return!0;var l=r.scrollLeft-r.clientWidth;if(l>0&&!(0===r.scrollLeft&&e<0||r.scrollLeft===l&&e>0))return!0}return!1}function s(s){var c=r(s),u=c[0],d=c[1];o(u,d)||(a=!1,e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(d?i(t,"top",t.scrollTop-d*e.settings.wheelSpeed):i(t,"top",t.scrollTop+u*e.settings.wheelSpeed),a=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(u?i(t,"left",t.scrollLeft+u*e.settings.wheelSpeed):i(t,"left",t.scrollLeft-d*e.settings.wheelSpeed),a=!0):(i(t,"top",t.scrollTop-d*e.settings.wheelSpeed),i(t,"left",t.scrollLeft+u*e.settings.wheelSpeed)),l(t),a=a||n(u,d),a&&(s.stopPropagation(),s.preventDefault()))}var a=!1;"undefined"!=typeof window.onwheel?e.event.bind(t,"wheel",s):"undefined"!=typeof window.onmousewheel&&e.event.bind(t,"mousewheel",s)}var o=t("../instances"),l=t("../update-geometry"),i=t("../update-scroll");e.exports=function(t){var e=o.get(t);r(t,e)}},{"../instances":18,"../update-geometry":19,"../update-scroll":20}],14:[function(t,e,n){"use strict";function r(t,e){e.event.bind(t,"scroll",function(){l(t)})}var o=t("../instances"),l=t("../update-geometry");e.exports=function(t){var e=o.get(t);r(t,e)}},{"../instances":18,"../update-geometry":19}],15:[function(t,e,n){"use strict";function r(t,e){function n(){var t=window.getSelection?window.getSelection():document.getSelection?document.getSelection():"";return 0===t.toString().length?null:t.getRangeAt(0).commonAncestorContainer}function r(){c||(c=setInterval(function(){return l.get(t)?(s(t,"top",t.scrollTop+u.top),s(t,"left",t.scrollLeft+u.left),void i(t)):void clearInterval(c)},50))}function a(){c&&(clearInterval(c),c=null),o.stopScrolling(t)}var c=null,u={top:0,left:0},d=!1;e.event.bind(e.ownerDocument,"selectionchange",function(){t.contains(n())?d=!0:(d=!1,a())}),e.event.bind(window,"mouseup",function(){d&&(d=!1,a())}),e.event.bind(window,"keyup",function(){d&&(d=!1,a())}),e.event.bind(window,"mousemove",function(e){if(d){var n={x:e.pageX,y:e.pageY},l={left:t.offsetLeft,right:t.offsetLeft+t.offsetWidth,top:t.offsetTop,bottom:t.offsetTop+t.offsetHeight};n.xl.right-3?(u.left=5,o.startScrolling(t,"x")):u.left=0,n.yl.bottom-3?(n.y-l.bottom+3<5?u.top=5:u.top=20,o.startScrolling(t,"y")):u.top=0,0===u.top&&0===u.left?a():r()}})}var o=t("../../lib/helper"),l=t("../instances"),i=t("../update-geometry"),s=t("../update-scroll");e.exports=function(t){var e=l.get(t);r(t,e)}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],16:[function(t,e,n){"use strict";function r(t,e,n,r){function o(n,r){var o=t.scrollTop,l=t.scrollLeft,i=Math.abs(n),s=Math.abs(r);if(s>i){if(r<0&&o===e.contentHeight-e.containerHeight||r>0&&0===o)return!e.settings.swipePropagation}else if(i>s&&(n<0&&l===e.contentWidth-e.containerWidth||n>0&&0===l))return!e.settings.swipePropagation;return!0}function a(e,n){s(t,"top",t.scrollTop-n),s(t,"left",t.scrollLeft-e),i(t)}function c(){w=!0}function u(){w=!1}function d(t){return t.targetTouches?t.targetTouches[0]:t}function p(t){return!(!t.targetTouches||1!==t.targetTouches.length)||!(!t.pointerType||"mouse"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE)}function f(t){if(p(t)){Y=!0;var e=d(t);g.pageX=e.pageX,g.pageY=e.pageY,v=(new Date).getTime(),null!==y&&clearInterval(y),t.stopPropagation()}}function h(t){if(!Y&&e.settings.swipePropagation&&f(t),!w&&Y&&p(t)){var n=d(t),r={pageX:n.pageX,pageY:n.pageY},l=r.pageX-g.pageX,i=r.pageY-g.pageY;a(l,i),g=r;var s=(new Date).getTime(),c=s-v;c>0&&(m.x=l/c,m.y=i/c,v=s),o(l,i)&&(t.stopPropagation(),t.preventDefault())}}function b(){!w&&Y&&(Y=!1,clearInterval(y),y=setInterval(function(){return l.get(t)&&(m.x||m.y)?Math.abs(m.x)<.01&&Math.abs(m.y)<.01?void clearInterval(y):(a(30*m.x,30*m.y),m.x*=.8,void(m.y*=.8)):void clearInterval(y)},10))}var g={},v=0,m={},y=null,w=!1,Y=!1;n&&(e.event.bind(window,"touchstart",c),e.event.bind(window,"touchend",u),e.event.bind(t,"touchstart",f),e.event.bind(t,"touchmove",h),e.event.bind(t,"touchend",b)),r&&(window.PointerEvent?(e.event.bind(window,"pointerdown",c),e.event.bind(window,"pointerup",u),e.event.bind(t,"pointerdown",f),e.event.bind(t,"pointermove",h),e.event.bind(t,"pointerup",b)):window.MSPointerEvent&&(e.event.bind(window,"MSPointerDown",c),e.event.bind(window,"MSPointerUp",u),e.event.bind(t,"MSPointerDown",f),e.event.bind(t,"MSPointerMove",h),e.event.bind(t,"MSPointerUp",b)))}var o=t("../../lib/helper"),l=t("../instances"),i=t("../update-geometry"),s=t("../update-scroll");e.exports=function(t){if(o.env.supportsTouch||o.env.supportsIePointer){var e=l.get(t);r(t,e,o.env.supportsTouch,o.env.supportsIePointer)}}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],17:[function(t,e,n){"use strict";var r=t("../lib/helper"),o=t("../lib/class"),l=t("./instances"),i=t("./update-geometry"),s={"click-rail":t("./handler/click-rail"),"drag-scrollbar":t("./handler/drag-scrollbar"),keyboard:t("./handler/keyboard"),wheel:t("./handler/mouse-wheel"),touch:t("./handler/touch"),selection:t("./handler/selection")},a=t("./handler/native-scroll");e.exports=function(t,e){e="object"==typeof e?e:{},o.add(t,"ps-container");var n=l.add(t);n.settings=r.extend(n.settings,e),o.add(t,"ps-theme-"+n.settings.theme),n.settings.handlers.forEach(function(e){s[e](t)}),a(t),i(t)}},{"../lib/class":2,"../lib/helper":6,"./handler/click-rail":10,"./handler/drag-scrollbar":11,"./handler/keyboard":12,"./handler/mouse-wheel":13,"./handler/native-scroll":14,"./handler/selection":15,"./handler/touch":16,"./instances":18,"./update-geometry":19}],18:[function(t,e,n){"use strict";function r(t){function e(){a.add(t,"ps-focus")}function n(){a.remove(t,"ps-focus")}var r=this;r.settings=s.clone(c),r.containerWidth=null,r.containerHeight=null,r.contentWidth=null,r.contentHeight=null,r.isRtl="rtl"===u.css(t,"direction"),r.isNegativeScroll=function(){var e=t.scrollLeft,n=null;return t.scrollLeft=-1,n=t.scrollLeft<0,t.scrollLeft=e,n}(),r.negativeScrollAdjustment=r.isNegativeScroll?t.scrollWidth-t.clientWidth:0,r.event=new d,r.ownerDocument=t.ownerDocument||document,r.scrollbarXRail=u.appendTo(u.e("div","ps-scrollbar-x-rail"),t),r.scrollbarX=u.appendTo(u.e("div","ps-scrollbar-x"),r.scrollbarXRail),r.scrollbarX.setAttribute("tabindex",0),r.event.bind(r.scrollbarX,"focus",e),r.event.bind(r.scrollbarX,"blur",n),r.scrollbarXActive=null,r.scrollbarXWidth=null,r.scrollbarXLeft=null,r.scrollbarXBottom=s.toInt(u.css(r.scrollbarXRail,"bottom")),r.isScrollbarXUsingBottom=r.scrollbarXBottom===r.scrollbarXBottom,r.scrollbarXTop=r.isScrollbarXUsingBottom?null:s.toInt(u.css(r.scrollbarXRail,"top")),r.railBorderXWidth=s.toInt(u.css(r.scrollbarXRail,"borderLeftWidth"))+s.toInt(u.css(r.scrollbarXRail,"borderRightWidth")),u.css(r.scrollbarXRail,"display","block"),r.railXMarginWidth=s.toInt(u.css(r.scrollbarXRail,"marginLeft"))+s.toInt(u.css(r.scrollbarXRail,"marginRight")),u.css(r.scrollbarXRail,"display",""),r.railXWidth=null,r.railXRatio=null,r.scrollbarYRail=u.appendTo(u.e("div","ps-scrollbar-y-rail"),t),r.scrollbarY=u.appendTo(u.e("div","ps-scrollbar-y"),r.scrollbarYRail),r.scrollbarY.setAttribute("tabindex",0),r.event.bind(r.scrollbarY,"focus",e),r.event.bind(r.scrollbarY,"blur",n),r.scrollbarYActive=null,r.scrollbarYHeight=null,r.scrollbarYTop=null,r.scrollbarYRight=s.toInt(u.css(r.scrollbarYRail,"right")),r.isScrollbarYUsingRight=r.scrollbarYRight===r.scrollbarYRight,r.scrollbarYLeft=r.isScrollbarYUsingRight?null:s.toInt(u.css(r.scrollbarYRail,"left")),r.scrollbarYOuterWidth=r.isRtl?s.outerWidth(r.scrollbarY):null,r.railBorderYWidth=s.toInt(u.css(r.scrollbarYRail,"borderTopWidth"))+s.toInt(u.css(r.scrollbarYRail,"borderBottomWidth")),u.css(r.scrollbarYRail,"display","block"),r.railYMarginHeight=s.toInt(u.css(r.scrollbarYRail,"marginTop"))+s.toInt(u.css(r.scrollbarYRail,"marginBottom")),u.css(r.scrollbarYRail,"display",""),r.railYHeight=null,r.railYRatio=null}function o(t){return t.getAttribute("data-ps-id")}function l(t,e){t.setAttribute("data-ps-id",e)}function i(t){t.removeAttribute("data-ps-id")}var s=t("../lib/helper"),a=t("../lib/class"),c=t("./default-setting"),u=t("../lib/dom"),d=t("../lib/event-manager"),p=t("../lib/guid"),f={};n.add=function(t){var e=p();return l(t,e),f[e]=new r(t),f[e]},n.remove=function(t){delete f[o(t)],i(t)},n.get=function(t){return f[o(t)]}},{"../lib/class":2,"../lib/dom":3,"../lib/event-manager":4,"../lib/guid":5,"../lib/helper":6,"./default-setting":8}],19:[function(t,e,n){"use strict";function r(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function o(t,e){var n={width:e.railXWidth};e.isRtl?n.left=e.negativeScrollAdjustment+t.scrollLeft+e.containerWidth-e.contentWidth:n.left=t.scrollLeft,e.isScrollbarXUsingBottom?n.bottom=e.scrollbarXBottom-t.scrollTop:n.top=e.scrollbarXTop+t.scrollTop,s.css(e.scrollbarXRail,n);var r={top:t.scrollTop,height:e.railYHeight};e.isScrollbarYUsingRight?e.isRtl?r.right=e.contentWidth-(e.negativeScrollAdjustment+t.scrollLeft)-e.scrollbarYRight-e.scrollbarYOuterWidth:r.right=e.scrollbarYRight-t.scrollLeft:e.isRtl?r.left=e.negativeScrollAdjustment+t.scrollLeft+2*e.containerWidth-e.contentWidth-e.scrollbarYLeft-e.scrollbarYOuterWidth:r.left=e.scrollbarYLeft+t.scrollLeft,s.css(e.scrollbarYRail,r),s.css(e.scrollbarX,{left:e.scrollbarXLeft,width:e.scrollbarXWidth-e.railBorderXWidth}),s.css(e.scrollbarY,{top:e.scrollbarYTop,height:e.scrollbarYHeight-e.railBorderYWidth})}var l=t("../lib/helper"),i=t("../lib/class"),s=t("../lib/dom"),a=t("./instances"),c=t("./update-scroll");e.exports=function(t){var e=a.get(t);e.containerWidth=t.clientWidth,e.containerHeight=t.clientHeight,e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight;var n;t.contains(e.scrollbarXRail)||(n=s.queryChildren(t,".ps-scrollbar-x-rail"),n.length>0&&n.forEach(function(t){s.remove(t)}),s.appendTo(e.scrollbarXRail,t)),t.contains(e.scrollbarYRail)||(n=s.queryChildren(t,".ps-scrollbar-y-rail"),n.length>0&&n.forEach(function(t){s.remove(t)}),s.appendTo(e.scrollbarYRail,t)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),o(t,e),e.scrollbarXActive?i.add(t,"ps-active-x"):(i.remove(t,"ps-active-x"),e.scrollbarXWidth=0,e.scrollbarXLeft=0,c(t,"left",0)),e.scrollbarYActive?i.add(t,"ps-active-y"):(i.remove(t,"ps-active-y"),e.scrollbarYHeight=0,e.scrollbarYTop=0,c(t,"top",0))}},{"../lib/class":2,"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-scroll":20}],20:[function(t,e,n){"use strict";var r,o,l=t("./instances"),i=function(t){var e=document.createEvent("Event");return e.initEvent(t,!0,!0),e};e.exports=function(t,e,n){if("undefined"==typeof t)throw"You must provide an element to the update-scroll function";if("undefined"==typeof e)throw"You must provide an axis to the update-scroll function";if("undefined"==typeof n)throw"You must provide a value to the update-scroll function";"top"===e&&n<=0&&(t.scrollTop=n=0,t.dispatchEvent(i("ps-y-reach-start"))),"left"===e&&n<=0&&(t.scrollLeft=n=0,t.dispatchEvent(i("ps-x-reach-start")));var s=l.get(t);"top"===e&&n>=s.contentHeight-s.containerHeight&&(n=s.contentHeight-s.containerHeight,n-t.scrollTop<=1?n=t.scrollTop:t.scrollTop=n,t.dispatchEvent(i("ps-y-reach-end"))),"left"===e&&n>=s.contentWidth-s.containerWidth&&(n=s.contentWidth-s.containerWidth,n-t.scrollLeft<=1?n=t.scrollLeft:t.scrollLeft=n,t.dispatchEvent(i("ps-x-reach-end"))),r||(r=t.scrollTop),o||(o=t.scrollLeft),"top"===e&&nr&&t.dispatchEvent(i("ps-scroll-down")),"left"===e&&no&&t.dispatchEvent(i("ps-scroll-right")),"top"===e&&(t.scrollTop=r=n,t.dispatchEvent(i("ps-scroll-y"))),"left"===e&&(t.scrollLeft=o=n,t.dispatchEvent(i("ps-scroll-x")))}},{"./instances":18}],21:[function(t,e,n){"use strict";var r=t("../lib/helper"),o=t("../lib/dom"),l=t("./instances"),i=t("./update-geometry"),s=t("./update-scroll");e.exports=function(t){var e=l.get(t);e&&(e.negativeScrollAdjustment=e.isNegativeScroll?t.scrollWidth-t.clientWidth:0,o.css(e.scrollbarXRail,"display","block"),o.css(e.scrollbarYRail,"display","block"),e.railXMarginWidth=r.toInt(o.css(e.scrollbarXRail,"marginLeft"))+r.toInt(o.css(e.scrollbarXRail,"marginRight")),e.railYMarginHeight=r.toInt(o.css(e.scrollbarYRail,"marginTop"))+r.toInt(o.css(e.scrollbarYRail,"marginBottom")),o.css(e.scrollbarXRail,"display","none"),o.css(e.scrollbarYRail,"display","none"),i(t),s(t,"top",t.scrollTop),s(t,"left",t.scrollLeft),o.css(e.scrollbarXRail,"display",""),o.css(e.scrollbarYRail,"display",""))}},{"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-geometry":19,"./update-scroll":20}]},{},[1]); document.documentElement.className+=" js_active ",document.documentElement.className+="ontouchstart"in document.documentElement?" vc_mobile ":" vc_desktop ",function(){for(var prefix=["-webkit-","-moz-","-ms-","-o-",""],i=0;i=$tabs.tabs("length")&&(index=0),$tabs.tabs("select",index)):(index=$tabs.tabs("option","active"),length=$tabs.find(".wpb_tab").length,index=jQuery(this).parent().hasClass("wpb_next_slide")?length<=index+1?0:index+1:index-1<0?length-1:index-1,$tabs.tabs("option","active",index))})})}}),"function"!=typeof window.vc_accordionBehaviour&&(window.vc_accordionBehaviour=function(){jQuery(".wpb_accordion").each(function(index){var $tabs,active_tab,collapsible,$this=jQuery(this);$this.attr("data-interval"),collapsible=!1===(active_tab=!isNaN(jQuery(this).data("active-tab"))&&0 div > h3",autoHeight:!1,heightStyle:"content",active:active_tab,collapsible:collapsible,navigation:!0,activate:vc_accordionActivate,change:function(event,ui){void 0!==jQuery.fn.isotope&&ui.newContent.find(".isotope").isotope("layout"),vc_carouselBehaviour(ui.newPanel)}}),!0===$this.data("vcDisableKeydown")&&($tabs.data("uiAccordion")._keydown=function(){})})}),"function"!=typeof window.vc_teaserGrid&&(window.vc_teaserGrid=function(){var layout_modes={fitrows:"fitRows",masonry:"masonry"};jQuery(".wpb_grid .teaser_grid_container:not(.wpb_carousel), .wpb_filtered_grid .teaser_grid_container:not(.wpb_carousel)").each(function(){var $container=jQuery(this),$thumbs=$container.find(".wpb_thumbnails"),layout_mode=$thumbs.attr("data-layout-mode");$thumbs.isotope({itemSelector:".isotope-item",layoutMode:void 0===layout_modes[layout_mode]?"fitRows":layout_modes[layout_mode]}),$container.find(".categories_filter a").data("isotope",$thumbs).on("click",function(e){e&&e.preventDefault&&e.preventDefault();var $thumbs=jQuery(this).data("isotope");jQuery(this).parent().parent().find(".active").removeClass("active"),jQuery(this).parent().addClass("active"),$thumbs.isotope({filter:jQuery(this).attr("data-filter")})}),jQuery(window).bind("load resize",function(){$thumbs.isotope("layout")})})}),"function"!=typeof window.vc_carouselBehaviour&&(window.vc_carouselBehaviour=function($parent){($parent?$parent.find(".wpb_carousel"):jQuery(".wpb_carousel")).each(function(){var $this=jQuery(this);if(!0!==$this.data("carousel_enabled")&&$this.is(":visible")){$this.data("carousel_enabled",!0);getColumnsCount(jQuery(this));jQuery(this).hasClass("columns_count_1")&&900;var carousel_li=jQuery(this).find(".wpb_thumbnails-fluid li");carousel_li.css({"margin-right":carousel_li.css("margin-left"),"margin-left":0});var fluid_ul=jQuery(this).find("ul.wpb_thumbnails-fluid");fluid_ul.width(fluid_ul.width()+300),jQuery(window).on("resize",function(){screen_size!=(screen_size=getSizeName())&&window.setTimeout(function(){location.reload()},20)})}})}),"function"!=typeof window.vc_slidersBehaviour&&(window.vc_slidersBehaviour=function(){jQuery(".wpb_gallery_slides").each(function(index){var $imagesGrid,this_element=jQuery(this);if(this_element.hasClass("wpb_slider_nivo")){var sliderTimeout=1e3*this_element.attr("data-interval");0===sliderTimeout&&(sliderTimeout=9999999999),this_element.find(".nivoSlider").nivoSlider({effect:"boxRainGrow,boxRain,boxRainReverse,boxRainGrowReverse",slices:15,boxCols:8,boxRows:4,animSpeed:800,pauseTime:sliderTimeout,startSlide:0,directionNav:!0,directionNavHide:!0,controlNav:!0,keyboardNav:!1,pauseOnHover:!0,manualAdvance:!1,prevText:"Prev",nextText:"Next"})}else this_element.hasClass("wpb_image_grid")&&(jQuery.fn.imagesLoaded?$imagesGrid=this_element.find(".wpb_image_grid_ul").imagesLoaded(function(){$imagesGrid.isotope({itemSelector:".isotope-item",layoutMode:"fitRows"})}):this_element.find(".wpb_image_grid_ul").isotope({itemSelector:".isotope-item",layoutMode:"fitRows"}))})}),"function"!=typeof window.vc_prettyPhoto&&(window.vc_prettyPhoto=function(){try{jQuery&&jQuery.fn&&jQuery.fn.prettyPhoto&&jQuery('a.prettyphoto, .gallery-icon a[href*=".jpg"]').prettyPhoto({animationSpeed:"normal",hook:"data-rel",padding:15,opacity:.7,showTitle:!0,allowresize:!0,counter_separator_label:"/",hideflash:!1,deeplinking:!1,modal:!1,callback:function(){-1
')}),vc_initVideoBackgrounds(),callSkrollInit=!1,window.vcParallaxSkroll&&window.vcParallaxSkroll.destroy(),$(".vc_parallax-inner").remove(),$("[data-5p-top-bottom]").removeAttr("data-5p-top-bottom data-30p-top-bottom"),$("[data-vc-parallax]").each(function(){var skrollrSize,skrollrStart,$parallaxElement,parallaxImage,youtubeId;callSkrollInit=!0,"on"===$(this).data("vcParallaxOFade")&&$(this).children().attr("data-5p-top-bottom","opacity:0;").attr("data-30p-top-bottom","opacity:1;"),skrollrSize=100*$(this).data("vcParallax"),($parallaxElement=$("
").addClass("vc_parallax-inner").appendTo($(this))).height(skrollrSize+"%"),parallaxImage=$(this).data("vcParallaxImage"),(youtubeId=vcExtractYoutubeId(parallaxImage))?insertYoutubeVideoAsBackground($parallaxElement,youtubeId):void 0!==parallaxImage&&$parallaxElement.css("background-image","url("+parallaxImage+")"),skrollrStart=-(skrollrSize-100),$parallaxElement.attr("data-bottom-top","top: "+skrollrStart+"%;").attr("data-top-bottom","top: 0%;")}),callSkrollInit&&window.skrollr&&(vcSkrollrOptions={forceHeight:!1,smoothScrolling:!1,mobileCheck:function(){return!1}},window.vcParallaxSkroll=skrollr.init(vcSkrollrOptions),window.vcParallaxSkroll)}),"function"!=typeof window.vc_gridBehaviour&&(window.vc_gridBehaviour=function(){jQuery.fn.vcGrid&&jQuery("[data-vc-grid]").vcGrid()}),"function"!=typeof window.getColumnsCount&&(window.getColumnsCount=function(el){for(var find=!1,i=1;!1===find;){if(el.hasClass("columns_count_"+i))return find=!0,i;i++}});var screen_size=getSizeName();function getSizeName(){var screen_w=jQuery(window).width();return 1170
').find(".inner");new YT.Player($container[0],{width:"100%",height:"100%",videoId:youtubeId,playerVars:{playlist:youtubeId,iv_load_policy:3,enablejsapi:1,disablekb:1,autoplay:1,controls:0,showinfo:0,rel:0,loop:1,wmode:"transparent"},events:{onReady:function(event){event.target.mute().setLoop(!0)}}}),vcResizeVideoBackground($element),jQuery(window).bind("resize",function(){vcResizeVideoBackground($element)})}),"function"!=typeof window.vcResizeVideoBackground&&(window.vcResizeVideoBackground=function($element){var iframeW,iframeH,marginLeft,marginTop,containerW=$element.innerWidth(),containerH=$element.innerHeight();containerW/containerH<16/9?(iframeW=containerH*(16/9),iframeH=containerH,marginLeft=-Math.round((iframeW-containerW)/2)+"px",marginTop=-Math.round((iframeH-containerH)/2)+"px"):(iframeH=(iframeW=containerW)*(9/16),marginTop=-Math.round((iframeH-containerH)/2)+"px",marginLeft=-Math.round((iframeW-containerW)/2)+"px"),iframeW+="px",iframeH+="px",$element.find(".vc_video-bg iframe").css({maxWidth:"1000%",marginLeft:marginLeft,marginTop:marginTop,width:iframeW,height:iframeH})}),"function"!=typeof window.vcExtractYoutubeId&&(window.vcExtractYoutubeId=function(url){if(void 0===url)return!1;var id=url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);return null!==id&&id[1]}),"function"!=typeof window.vc_googleMapsPointer&&(window.vc_googleMapsPointer=function(){var $=window.jQuery,$wpbGmapsWidget=$(".wpb_gmaps_widget");$wpbGmapsWidget.on("click",function(){$("iframe",this).css("pointer-events","auto")}),$wpbGmapsWidget.on("mouseleave",function(){$("iframe",this).css("pointer-events","none")}),$(".wpb_gmaps_widget iframe").css("pointer-events","none")}),"function"!=typeof window.vc_setHoverBoxPerspective&&(window.vc_setHoverBoxPerspective=function(hoverBox){hoverBox.each(function(){var $this=jQuery(this),perspective=4*$this.width()+"px";$this.css("perspective",perspective)})}),"function"!=typeof window.vc_setHoverBoxHeight&&(window.vc_setHoverBoxHeight=function(hoverBox){hoverBox.each(function(){var $this=jQuery(this),hoverBoxInner=$this.find(".vc-hoverbox-inner");hoverBoxInner.css("min-height",0);var frontHeight=$this.find(".vc-hoverbox-front-inner").outerHeight(),backHeight=$this.find(".vc-hoverbox-back-inner").outerHeight(),hoverBoxHeight=backHeight